Використання графічних операторів в програмуванні

 

Зміст

delphi інтерфейс графічний

Вступ

1. Опис алгоритму

2. Вибір складу технічних і програмних засобів

3. Організація вхідних і вихідних даних

4. Розробка програми

5. Блок-схема

6. Текст програми

7. Описання програми

Висновок

Література


Вступ


Програмування на мові Delphi дозволяє реалізувати широкий спектр практичних задач. Основна перевага цієї мови програмування полягає в оптимальному поєднанні простоти використання, доступності і великого набору різноманітних можливостей, що дозволяють охопити всі основні напрями діяльності, розробка прикладних програм.

Актуальність теми полягає в наступному: показати, як використовуючи мишу та стандартні оператори в мові Delphi створити графічно розвинений інтерфейс користувача для гри «Ханойські вежі».

Обєкт дослідження: використання графічних операторів в програмуванні.

Предмет дослідження: використання основних алгоритмiв гри «Ханойські вежі» в розробці програми на Delphi.

Мета дослідження: розглянути основні можливості використання алгоритмiв гри «Ханойські вежі» у графічному інтерфейсі Delphi.

Задачі:

.Зробити огляд літератури за темою.

2.Розглянути графічні можливості Delphi.

3.Описати механізм підтримки правил гри «Ханойські вежі».

4.Розробити програму, яка надасть можливість гри у «Ханойські вежі».

Гіпотеза дослідження: робота надасть користувачеві інструкції до вивчення алгоритмів гри у «Ханойські вежі» та реалізації їх у Delphi.


1. Опис алгоритму


Ханойські вежі - це математична гра або головоломка <#"justify">1.За раз можна рухати лише один диск.

2.Кожен крок полягає в перенесенні верхнього диска з одного зі стрижнєв і насування його на інший зверху інших дисків, які вже можуть бути присутніми на другому стрижні.

.Диск не можна класти з гори меншого диска.

На Заході задачку вперше оприлюднив французький математик Едуард Лукас у 1863. Існує легенда про храм в Індії, який містив велику кімнату з трьома стовпами і 64 золотими дисками на них. Жрець брагман <#"14" src="doc_zip1.jpg" />.


2. Вибір складу технічних і програмних засобів


Середовище Delphi дозволяє доволі швидко розробляти додатки для Windows.- імперативний, структурований, об'єктно-орієнтована мова програмування, діалект Object Pascal. Починаючи з середи розробки Delphi 7.0, в офіційних документах Borland стала використовувати назву Delphi для позначення мови Object Pascal. Починаючи з 2007 року вже язик Delphi (похідний від Object Pascal) почав жити своїм самостійним життям і зазнавав різні зміни, пов'язані з сучасними тенденціями (наприклад, з розвитком платформи. NET) розвитку мов програмування: з'явилися class helpers, перевантаження операторів та інше.

Для роботи програми необхідні лише текстові документи з теорією, які повинні знаходитись в папці з програмою. Інших додаткових засобів не потребує.

Середовище Delphi стало, по суті, кращим засобом програмування для операційної системи Windows.дозволяє створювати додатки інтерактивним вибором необхідних компонентів з Component Palette і перетяганням їх на форму. Основне ж гідність цього методу полягає в тому, що Delphi при цьому самостійно створює необхідний код. Це нагадує по своїх можливостях Visual Basic і інші подібні мови програмування, однак у випадку Delphi ви одержуєте справжній об'єктно-орієнтований код і всі можливості цього підходу, включаючи розширення функціональних можливостей компонентів Delphi до рівня, що задовольняє ваші запити. Ви можете використовувати компоненти Delphi, можете успадковувати їх і додавати власні методи, а крім того, ви можете використовувати керуючі елементи Active X.

Одне з основних відмінностей Delphi від інших схожих інструментів візуальної розробки додатків полягає в наявності дійсно швидкого, ефективного компілятора. Компілятор видає не тільки повідомлення про помилки, але й величезна кількість попереджень і підказок, які дозволяють створювати більш ясний код. Важливою гідністю є також видача одночасно декількох повідомлень про помилки, що дозволяє швидше виправляти їх.

Одна з більших проблем не візуального програмування - створення користувацького інтерфейсу, тобто найчастіше більше часу займає саме розробка й створення інтерфейсу. З іншого боку, при розробці не варто забувати й про якісний програмний код. Delphi дозволяє створювати програму, вклавши максимум сил і вміння в її робочу частину, і всіляко допомагає вам у тій області, де не має конкурентів, в області створення користувацького інтерфейсу. Витративши якийсь час на навчання роботи в Delphi, ви зможете легко й просто створювати користувацькі інтерфейси, не порівнянні ні з якими іншими, створені за допомогою традиційного інструментарію. Більше того, вони будуть не просто елегантні, але при необхідності будуть мати "ізюминку" у вигляді розроблених вами нових керуючих елементів, що не займе у вас багато сил і часу з таким помічником, як Delphi.

Завдяки об'єктно-орієнтованій природі Delphi ви можете створювати свої компоненти не тільки з нуля, але й використовуючи багатий набір наявних компонентів. Крім створення нових компонентів, розширюваність Delphi включає також можливість інтегрування в середовище Delphi цілих підпрограм, називаних експертами. Expert Interface дозволяє вам доповнювати середовище своїми пунктами меню й діалоговими вікнами для розширення її функціональності.

Працездатність програми перевірялась на компютерах з такими характеристиками:

1)AMD Phenom II x4 3.4 Ghz, 12 Gb RAM

)AMD E450 x2 2.3 Ghz., 4 Gb RAM

Ніяких проблем не було знайдено.


3. Організація вхідних і вихідних даних


Компонент Delphi Button це проста командна кнопка. Командна кнопка Delphi кнопка використовується для реалізації в програмі команд за допомогою обробника події OnClick цього компонента. Один і той же обробник може обробляти події кількох компонентів TButton (та й не тільки TButton, але й навіть компонентів інших типів). Для визначення того, подія якого саме компонента потрібно обробляти, використовується вбудована змінна Sender типу TObject, що позначає об'єкт, що викликав дану подію. Для ілюстрації цієї можливості розглянемо просту процедуру, визначальну натиснуту кнопку.

Компонент Delphi Edit являє собою однорядкове текстове поле, що служить для введення даних користувачем. Основною властивістю компонента Delphi Edit, передавальним введену інформацію, є властивість Text типу String. На відміну від компонента Delphi Label, який автоматично підлаштовує свою довжину під розмір тексту у властивості Caption, що вводиться в компонент Delphi Edit текст ніяк не впливає на довжину (властивість Width) цього компонента. Чи не поміщається в встановлену довжину частину тексту зсувається вправо або вліво за межі компоненту.

Delphi компонент Label призначений для відображення статичного тексту, тобто написів і позначок на формі, які не міняються протягом усього часу роботи програми. Звичайно, текст напису, відображуваний компонентом Label можна змінити, але не безпосередньо, а тільки програмно. Властивістю компонента Label, яке використовується для завдання відображуваного тексту, є Caption. Хоча вважається, що компонент Delphi Label призначений для відображення саме однострочного тексту, це не зовсім вірно. Властивість WordWrap компонента Label дозволяє виводити текст в декілька рядків.

Компонент Delphi Timer дуже простий компонент, який не видно на екрані, але, тим не менш, Timer Delphi виконує дуже важливі функції в програмі. Delphi Timer дозволяє вводити необхідні затримки між виконанням тих чи інших дій. Компонент Delphi Timer не є дуже точним і не підходить для вимірювання малих проміжків часу. Його точність порядку 50 мілісекунд.

FormCreate відповідає за створення головної форми. Game запускає саму гру, з даною кількістю дисків. Panel2Click, Panel3Click, Panel4Click відповідають за переміщення дисків на стержнях. Pos, Sel, Hig, Move - процедури які відповідають за підрахунки координат при переміщенні дисків. EndOfGame - закінчення гри. N4Click - вихід.


4. Розробка програми


. Постановка задачі

. Вивчення літератури з заданого питання

. Розробка алгоритму написання програми

. Створення блок-схеми

. Макетування першочергових алгоритмів

. Написання тестової версії програми

. Аналіз за тестування створеного проекту

. Доопрацювання програми та оформлення графічної оболонки


5. Блок-схема


Для створення програми за заданим завданням необхідною умовою є створення блок - схеми, яка допомагає більш добре уявити, які структурні частини повинна містити у собі створена програма.

Малюнок 1 - Блок-схема програми


6. Текст програми

kyrsov;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, ComCtrls, Buttons;= array of TPanel;= class(TForm): TPanel;: TPanel;: TPanel;: TPanel;: TPanel;: TPanel;: TPanel;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TStatusBar;: TTimer;: TLabel;: TLabel;: TLabel;: TEdit;: TUpDown;: TButton;: TButton;: TLabel;: TTimer;Game(Sen: TObject);PanelClick(Sender: TObject);Move(Pan1, Pan2: TPanel; Ed: TEdit);Hig(Pan: Pin; Tow: TPanel; Ed1, Ed2: TEdit);EndOfGame;Sel(Pan1: TObject; Pan: Pin; Ed1, Ed2, Ed3: TEdit);Pos(Panel: TPanel);FormCreate(Sender: TObject);Panel3Click(Sender: TObject);Panel4Click(Sender: TObject);Panel2Click(Sender: TObject);N2Click(Sender: TObject);Timer1Timer(Sender: TObject);N4Click(Sender: TObject);

{ Private declarations }

{ Public declarations };, j, t, n: integer;: boolean;: Pin;, s: string;: TPanel;: TForm1;

{$R *.dfm}TForm1.FormCreate(Sender: TObject);.Height := UpDown1.Position * 20 + 40;.Height := UpDown1.Position * 20 + 40;.Height := UpDown1.Position * 20 + 40;.Top := Panel5.Top - UpDown1.Position * 20 - 30;.Top := Panel5.Top - UpDown1.Position * 20 - 30;.Top := Panel5.Top - UpDown1.Position * 20 - 30;:= False;.Enabled := False;.Enabled := False;.Visible := False;.Visible := False;:= 0;.Panels.Items[1].Text := 'Кол-во шагов: ' + IntToStr(t);:= '00';:= '00';.Panels.Items[0].Text := 'Время игры: ' + m + ':' + s;.Text := IntToStr(UpDown1.Position);.Text := IntToStr(0);.Text := IntToStr(0);.Text := '';.Text := '';;TForm1.Panel2Click(Sender: TObject);.Caption := '';(f = True) and (v.Color = clLime) and

((v.Caption <= Edit4.Text) or (Edit4.Text = '')) then:= t + 1;.Panels.Items[1].Text := 'Кол-во шагов: ' + IntToStr(t);(v);.Text := IntToStr(StrToInt(Edit1.Text) + 1);(v, Panel5, Edit1);.Text := v.Caption;(p, Panel3, Edit5, Edit2);(p, Panel4, Edit6, Edit3);;.Color := clBlue;.Caption := 'Выберите диск для перемещения';.Caption := 'Неправильный ход';;TForm1.Panel3Click(Sender: TObject);.Caption := '';(f = True) and (v.Color = clLime) and

((v.Caption <= Edit5.Text) or (Edit5.Text = '')) then:= t + 1;.Panels.Items[1].Text := 'Кол-во шагов: ' + IntToStr(t);(v);.Text := IntToStr(StrToInt(Edit2.Text) + 1);(v, Panel7, Edit2);.Text := v.Caption;(p, Panel2, Edit4, Edit1);(p, Panel4, Edit6, Edit3);;.Color := clBlue;.Caption := 'Выберите диск для перемещения';.Caption := 'Ход не верный';;TForm1.Panel4Click(Sender: TObject);.Caption := '';(f = True) and (v.Color = clLime) and

((v.Caption <= Edit6.Text) or (Edit6.Text = '')) then:= t + 1;.Panels.Items[1].Text := 'Кол-во шагов: ' + IntToStr(t);(v);.Text := IntToStr(StrToInt(Edit3.Text) + 1);(v, Panel6, Edit3);.Text := v.Caption;(p, Panel2, Edit4, Edit1);(p, Panel3, Edit5, Edit2);;.Color := clBlue;.Caption := 'Выберите диск для перемещения';.Caption := 'Ход не верный';;TForm1.Pos(Panel: TPanel);(Panel.Left = StrToInt(FloatToStr(90 - Panel.Width / 2))) then.Text := IntToStr(StrToInt(Edit1.Text) - 1);(Panel.Left = StrToInt(FloatToStr(300 - Panel.Width / 2))) then.Text := IntToStr(StrToInt(Edit2.Text) - 1);(Panel.Left = StrToInt(FloatToStr(510 - Panel.Width / 2))) then.Text := IntToStr(StrToInt(Edit3.Text) - 1);;TForm1.Sel(Pan1: TObject; Pan: Pin; Ed1, Ed2, Ed3: TEdit);((Pan1 as TPanel).Caption = Ed1.Text) or

((Pan1 as TPanel).Caption = Ed2.Text) or

((Pan1 as TPanel).Caption = Ed3.Text) theni := 1 to UpDown1.Position do[i].Color := clBlue; (Pan1 as TPanel)

.Color := clLime;.Caption := 'Переместите диск';;;TForm1.EndOfGame;(Edit2.Text = IntToStr(UpDown1.Position)) or

(Edit3.Text = IntToStr(UpDown1.Position)) then.Enabled := False;.Visible := True;.Visible := False;.Enabled := False;;;TForm1.Hig(Pan: Pin; Tow: TPanel; Ed1, Ed2: TEdit);StrToInt(Ed2.Text) = 1 theni := 1 to UpDown1.Position do(Tow.Left = Pan[i].Left + Pan[i].Width / 2 - 5) then.Text := Pan[i].Caption;StrToInt(Ed2.Text) > 1 theni := UpDown1.Position downto 2 doj := UpDown1.Position - 1 downto 1 do(Tow.Left = Pan[i].Left + Pan[i].Width / 2 - 5) and

(Tow.Left = Pan[j].Left + Pan[j].Width / 2 - 5) then(StrToInt(Pan[i].Caption) > StrToInt(Pan[j].Caption)) then.Text := Pan[j].Caption;StrToInt(Ed2.Text) = 0 then.Text := '';;TForm1.Move(Pan1, Pan2: TPanel; Ed: TEdit);.Left := StrToInt(FloatToStr(Pan2.Left + Pan2.Width / 2 - Pan1.Width / 2).Top := Pan2.Top - 20 * StrToInt(Ed.Text);;TForm1.N2Click(Sender: TObject);(Sender);;TForm1.Timer1Timer(Sender: TObject);:= IntToStr(StrToInt(s) + 1);(s = '60') then:= IntToStr(StrToInt(m) + 1);:= '00';;Length(s) = 1 then:= '0' + IntToStr(StrToInt(s));Length(m) = 1 then:= '0' + IntToStr(StrToInt(m) + 1);.Panels.Items[0].Text := 'Время игры: ' + m + ':' + s;;TForm1.PanelClick(Sender: TObject);((Sender as TPanel).Caption = Edit4.Text) or

((Sender as TPanel).Caption = Edit5.Text) or

((Sender as TPanel).Caption = Edit6.Text) theni := 1 to UpDown1.Position do[i].Color := clBlue; (Sender as TPanel):= clLime;:= (Sender as TPanel);:= True;.Caption := 'Переместите диск';;;TForm1.Game(Sen: TObject);MessageDlg('Вы уверены, что хотите закончить эту игру и начать новую?',, [mbOK, mbCancel], 0) = 1 theni := 1 to n do[i].Destroy;(Sen);.Enabled := True;.Enabled := True;.Visible := True;.Caption := 'Выберите диск для перемещения';:= UpDown1.Position;(p, UpDown1.Position + 1);i := 1 to UpDown1.Position do.Text := IntToStr(i);.Text := IntToStr(1);[i] := TPanel.Create(Self);[i].Height := 20;[i].Width := Panel5.Width - 16 * (UpDown1.Position - i + 1);[i].Left := (Panel2.Left + 5) - StrToInt(FloatToStr(p[i].Width / 2));[i].Top := Panel5.Top - p[i].Height * (UpDown1.Position - i + 1);[i].Color := clBlue;[i].Anchors := [akLeft, akBottom];[i].Font.Color := clYellow;[i].Font.Style := [fsBold];[i].Caption := IntToStr(i);[i].OnClick := PanelClick;[i].Parent := Panel1;;;;TForm1.N4Click(Sender: TObject);MessageDlg('Закончить игру и выйти?', mtInformation, [mbOK, mbCancel], 0) = 1 then;;.


7. Описання програми


procedure TForm1.FormCreate(Sender: TObject);Створення головної форми та малювання вежprocedure TForm1.Pos(Panel: TPanel);Переміщення диска при його виділенніprocedure TForm1.Sel(Pan1: TObject; Pan: Pin; Ed1, Ed2, Ed3: TEdit);Виділення дискуprocedure TForm1.Button3Click(Sender: TObject);Визиває відомості про програму procedure TForm1.EndOfGame;Закінчення гриprocedure TForm1.Hig(Pan: Pin; Tow: TPanel; Ed1, Ed2: TEdit);Графічне відображення диску на новій вежіprocedure TForm1.Move(Pan1, Pan2: TPanel; Ed: TEdit);Процедура підрахунку координат при переміщенніprocedure TForm1.N2Click(Sender: TObject);Клавіша нової гриprocedure TForm1.Timer1Timer(Sender: TObject);Відлік часузПроцедури переміщення дисків на стержняхprocedure TForm1.Panel2Click(Sender: TObject);до procedure TForm1.Panel2Click(Sender: TObject);procedure TForm1.Game(Sen: TObject);Процедура початку нової гриprocedure TForm1.N4Click(Sender: TObject);Клавіша виходу з програми

Для створення даної програми були використані стандартні можливості Delphi. Так виглядає вікно конструктора програми.


Малюнок 2 - Конструктор програмного засобу

Після запуску програми ми бачимо таку форму.


Малюнок 3 - Запуск програмного засобу


Після початку нової ігри зявляються вежі.


Малюнок 4 - Початок гри


Закінчення гри.


Малюнок 5 - Закінчення гри


Висновок


У даній курсовій роботі був зроблений огляд літератури по даній темі з яких було взято відомості про використання графічних засобів при розробці програми «Ханойські вежі» на Delphi.

Були вивчені основні методи рішення гри «Ханойські вежі» та розроблена програма-аналог даної гри.

Розроблена програма демонструє як користувач може грати та вигравати при правильному алгоритмі. У програмі на прикладах простих геометричних фігур було показано, як можливо за допомогою миші переміщювати графічни образи по екрану на різні вежі.


Література


1.Нил Дж. Рубенкинг. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 = Delphi for Dummies. - М.: Диалектика <http://ru.wikipedia.org/w/index.php?title=%D0%94%D0%B8%D0%B0%D0%BB%D0%B5%D0%BA%D1%82%D0%B8%D0%BA%D0%B0_%28%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE%29&action=edit&redlink=1>, 2007. - 336 с.

.Хавьер Пашеку. Программирование в Borland Delphi 2006 для профессионалов = Delphi for .NET Developers Guide. - М.: Вильямс <http://ru.wikipedia.org/w/index.php?title=%D0%92%D0%B8%D0%BB%D1%8C%D1%8F%D0%BC%D1%81_%28%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE%29&action=edit&redlink=1>, 2006. - 944 с.

.А.Н. Вальвачев, К.А. Сурков, Д.А. Сурков, Ю.М. Четырько. Программирование на языке Delphi. Учебное пособие <http://www.rsdn.ru/?article/Delphi/Delphi_7_00.xml>. - 2005.

.Архангельский А.Я. Delphi 7 Справочное пособие. - М.: Бином-Пресс. -2004. -1024 с.

.Попов В.В. Программирование в Delphi. Оптимальный подход, Век, 2005.-150 с.

.Глушаков С.В., Клевцов А.Л., Программирование в среде Delphi 7.0, Фолио 2003 - 415 с.

.Ханойская башня- Википедия [Электроный ресурс]: Википедия - свободная энциклопедия.


Зміст delphi інтерфейс графічний Вступ 1. Опис алгоритму 2. Вибір складу технічних і програмних засобів 3. Організація вхідних і вихідних даних

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ