Міністерство освіти і науки Російської Федерації p>
Армавірський державний педагогічний університет p>
Кафедра інформатики та інформаційних технологій навчання p>
Курсова робота p>
ПО ІНФОРМАТИЦІ p>
Тема роботи: "Моделювання ігрових програм p>
засобами Delphi" p>
Автор роботи: студентка
303 групи МФ p>
Татарникова Людмила
Володимирівна p>
Науковийкерівник: доцент Неверов p>
Олександр
Володимирович p>
Оцінка :____________________________ p>
Армавір p>
2004 p>
Зміст p>
Вступ 3 p>
Етапи розробки проекту 4 p>
Висновок 13 p>
Список літератури .14 p>
Додаток ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .15 p>
Введення p>
Система Delphi є однією з кращих розробок в сучаснійтеорії і практики програмування. Як будь-яка подібна система, Delphiпризначена для розробки програм і має дві характерні особливості:створювані нею програми можуть працювати не тільки під управлінням Windows,а сама вона відноситься до класу інструментальних засобів прискореноїрозробки програм. Це прискорення досягається за рахунок наступних властивостей
Delphi: візуального конструювання форм і широкого використаннябібліотеки візуальних компонентів. p>
Візуальне конструювання форм позбавляє програміста від багатьохаспектів розробки інтерфейсу програми, тому що Delphi автоматичноготує необхідні програмні заготовки і відповідний файл ресурсів.
При створенні програм використовується спеціальне вікно, яке називаєтьсявікном форми, як прототип майбутнього вікна програми, воно наповнюєтьсякомпонентами, що реалізовують потрібні інтерфейсні властивості (різного родусписки, кнопки, смуги прокрутки і т. п.). Компоненти знаходяться вбібліотеці візуальних компонентів. Вона надає програмісту величезнерізноманітність програмних заготовок, які негайно або після нескладноїналаштування готові до роботи в рамках програми. Використання компонентів нетільки у багато разів зменшує терміни розробки програм, але й істотнознижує ймовірність випадкових програмних помилок. p>
У Delphi можна складати проекти для задач практично будь-якого типу:це і розрахункові завдання, і завдання роботи з файлами, і обробка баз даних,та інші. Найбільш ефектними і цікавими є задачі моделюваннярізних логічних ігор. Вони привертають увагу користувачів і формуютьстійкий інтерес до вивчення мов програмування. p>
Метою даної курсової роботи є створення однієї з таких ігор всередовищі програмування Delphi 6. Гра носить назву "Збери картинку". Вонаслужить аналогом гри "15", тільки гравець переміщує не цифри, а фрагментикартинки. p>
Етапи розробки проекту p>
Моделювання ігри "Збери картинку" проходить ряд етапів. Їхвиконання гарантує досягнення поставленої мети. p>
1.В Delphi 6 створити новий проект під назвою "Soberi".
Встановити основні властивості вікна форми: p>
Left = 239 p>
Top = 185 p>
BorderIcons = [biSystemMenu] p>
BorderStyle = bsSingle p>
Caption = Збери картинку p>
ClientHeight = 254 p>
ClientWidth = 255 p>
Color = clBtnFace p>
Font.Charset = DEFAULT_CHARSET p>
Font.Color = clWindowText p>
Font.Height = -11 p>
Font.Name = 'MS Sans Serif' p>
Font . Style = [] p>
Menu = MainMenu1 p>
OldCreateOrder = False p>
OnCreate = FormCreate p>
OnMouseDown = FormMouseDown p> < p> OnPaint = FormPaint p>
PixelsPerInch = 96 p>
TextHeight = 13. p>
2.Создать процедуру щодо створення форми (обробка події OnCreate): p>
procedure TForm1.FormCreate (Sender: TObject) (стор.21)
Для її виконання необхідно внести в програму наступні процедури: p>
procedure TForm1.Formmas (стор.18) procedure TForm1.NewGame (стор.17) p>
Процедура Formmas формує масив клітин ігрового поля. NewGameдозволяє завантажувати зображення 'pic_1.bmp' з зовнішнього растрового файлу, якщопри зверненні до файлу відбувається помилка, то форма закривається. Також привиконання цієї процедури встановлюється розмір форми, що дорівнює розмірукартинки. Картинка розрізає на фрагменти, які перемішуються
(процедура Mixer стор.20) і відображаються на формі (процедура ShowPoleстор.19). Для перемішування 150 раз випадковим чином вибирається фрагментзображення, що знаходиться поряд з порожньою кліткою і переміщується в цю порожнюклітку. Для відображення фрагментів на формі задаються прямокутні області,на канву яких копіюються частини зображення. Форма набуває вигляду: p>
p>
3. Створити процедуру з обробки події OnMouseDown: procedure TForm1.FormMouseDown (Sender: TObject; Button:
TMouse Button; Shift: TShiftState; X, Y: Integer) (стор.19) p>
Вона дозволяє при натисненні на кнопку миші обчислювати номер фрагмента,на якому зроблено клацання. Далі необхідно створити процедуру Move
(стор.18). У ній перевіряється, чи вільна одна з сусідніх клітин. Якщо так,то цей фрагмент стирається і заново відображається у сусідній клітці. Кожномуфрагментом зображення поставлено у відповідність його порядковий номер. Цедозволяє перевірити, чи зібрані номери в потрібному порядку, тобто зібрана чикартинка цілком. Для цього потрібно створити функцію Finish (стор.17), якабуде виконувати цю перевірку. Якщо малюнок зібрана, то на порожню кліткукопіюється останній фрагмент зображення. На екран виводиться повідомлення "
Мета досягнута! "Гравець має можливість зіграти ще раз, вибравши" Yes ",якщо він обирає "No", то програма завершує свою роботу. p>
4. Розмістити на формі компоненти MainMenu1 і OpenPictureDialog1 зсторінок Standart і Dialog відповідно. Створити головне меню програми
(подвійне клацання мишею по MainMenu) наступної структури: p>
Гра | Рівень | Довідка | | Нова | Простий | Правила гри | | Набір картинок p>
| Середній | Про програму | | Вихід | Складний | | |
Тоді форма набуде вигляду: p>
p>
5. Створити процедуру для пункту меню гра - нова: procedure TForm1.N2Click (Sender: TObject) (стор.22) p>
Ця процедура дозволяє гравцеві почати гру спочатку. Картинка зновурозрізає на фрагменти, які перемішуються і відображаються на формі. p>
6. Для пункту набір картинок потрібно зробити наступне: заповнитикомпонент OpenPictureDialog файлами із зображеннями формату bmp, потімстворити процедуру (клацнути мишею по набір картинок) procedure TForm1.N3Click (Sender: TObject) (стор.22),яка дасть змогу вибирати ці зображення під час гри. p>
Таким чином, програма буде працювати для картинки, що завантажуєтьсяпід час старту програми, а також дозволить завантажувати довільнізображення формату bmp. p>
7. p>
Програмуємо пункт меню вихід: procedure TForm1.N11Click (Sender: TObject) (стор.21)
Ця процедура забезпечує вихід з гри. P>
8. Щоб була можливість вибору рівня гри, необхідно створитинаступні процедури:для пункту простий - procedure TForm1.N8Click (Sender: TObject) (стор.22);для пункту середній - procedure TForm1.N9Click (Sender: TObject) (стор.22);для пункту складний - procedure TForm1.N10Click (Sender: TObject) (стор.23). p>
Рівні залежать від кількості фрагментів, на які розбиваєтьсякартинка. p>
p>
Простий Середній рівеньрівень p>
p>
Складний рівень p>
9. Щоб гравець міг ознайомитися з правилами гри, вибравши в менюпункт правила гри, необхідно зробити наступне: p>
. У програмі Word Pad набрати текст, змістом якого є правила гри "Збери картинку", зберегти його у файлі формату rtf під назвою "Правила". Отриманий файл зберегти в папці, де знаходиться проект Soberi. P>
. Створити нову форму Form3; p>
. Розмістити на формі об'єкти: Button1 і Panel1 з сторінки Standart і p>
RichEdit1 з Win32; p>
. Змінити деякі властивості об'єктів: p>
Для Panel1: p>
Align - alBottom. P>
Для Button1: p>
Caption - Закрити. P >
Для RichEdit1: p>
Align - alClient; p>
ScrollBars - Vertical; p>
Форма буде мати вигляд: p>
p>
. Командою Use Unit (Alt + F11) додати до основної програми Unit3, пов'язаний з Form3; p>
. Створити процедуру для пункту правила гри (клацнути мишею по правила гри): procedure TForm1.N6Click (Sender: TObject) (стор.22) p>
Ця процедура виводить на екран форму Form3 і поміщає на її компонент p >
RichEdit вміст текстового файлу "Правила". Форма набуває вигляду: p>
p>
Таким чином, гравець отримує можливість ознайомитися з правиламиігри p>
10. Кожна призначена для користувача програма повинна містити відомості проте, хто є її автором, де і коли вона була розроблена. Ці данібудуть знаходитися в пункті меню про програму. Щоб їх туди помістити,необхідно виконати наступні дії: p>
. Створити новий проект Progr_ і зберегти його в папці, в якій знаходиться проект Soberi; p>
. Розмістити на формі кілька об'єктів: Label1, Label2, Button1, p>
Panel1, Image, вибравши їх на сторінках Standart і Additional; p>
. Змінити деякі властивості форми і розміщених компонентів: для Form1: p>
Name - Form2; p>
Caption - Про програму Soberi_; p>
BorderIcons: biMaximize - False; biMinimize -- False; biSystemMenu - False. p>
Для Lable1: p>
Caption - Курсова робота за темою: "Моделювання ігрових програм засобами Delphi"; p>
WordWrap - True;
Alignment - taCenter. p>
Для Label2: p>
Caption - Виконала студентка 3 курсу математичного факультету p>
Татарникова Л. В.; p>
WordWrap - True; p>
Alignment - taCenter. p>
Для Panel1: p>
Caption - Армавір 2004; p>
BevelInner - byLowered; p>
BevelOuter - byRaised; p>
Для Button1: p>
Caption - Закрити. p>
. На компонент Image слід скопіювати зображення, яке може бути довільним, тобто за бажанням користувача. P>
У результаті форма набуде вигляду: p>
p>
. Для кнопки Button1 написати процедуру: procedure TForm2.Button1Click (Sender: TObject) begin close; end. P>
Ця процедура дозволяє при натисненні на кнопку закривати форму. P>
. Отриманий проект Progr_ додаємо в первинний проект Soberi; p>
. Пункт меню про програму програмуємо такою процедурою: procedure TForm1.N7Click (Sender: TObject) (стор.21). P>
Коли Ви робите цього пункту на екран буде виводитися вікно форми з проекту p>
Progr_ , яке містить основні відомості про проект Soberi. p>
11. Заключний етап, на якому слід запустити проект. P>
Висновок p>
В результаті виконання курсової роботи в середовищі програмування
Delphi 6 була змодельована логічна гра під назвою "Зберикартинку ". Гра містить меню, використовуючи яке можна вибирати різнівиди картинок, також існує можливість встановлювати рівеньскладності, який віддає перевагу гравець. Якщо є потреба ознайомитисяз правилами гри, то їх теж можна знайти у головному меню, там же знаходитьсяосновна інформація про програму. p>
Даний проект може з великим успіхом використовуватися на урокахінформатики в школі, як приклад програми, розробленої засобами
Delphi 6, а також в якості однієї з ігор, що розвивають логічне мислення. P>
Список використаної літератури: p>
1. Архангельський А. Я. Інтегроване середовище розробки Delphi -
М.: ЗАО, Біном; 1999. P>
2. Марко Кенту для професіоналів Delphi 6: изд. Пітер, 2002. P>
3. Фаронов В. В. DELPHI 6: Учбовий курс (+ дискета) - СПб: Пітер,
2002. P>
Додаток p>
Текст програми p>
unit Soberi_;interfaceuses p>
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, Menus, ExtDlgs; p>
type
TForm1 = class (TForm) p>
MainMenu1: TMainMenu; p>
N1: TMenuItem; p>
N2: TMenuItem; p>
N3: TMenuItem; p>
N4: TMenuItem; p>
N5: TMenuItem; p>
N6: TMenuItem; p>
N7: TMenuItem; p>
N8: TMenuItem; p>
N9: TMenuItem; p>
N10: TMenuItem;
N11: TMenuItem; p>
OpenPictureDialog1: TOpenPictureDialog; procedure FormCreate (Sender: TObject); procedure FormMouseDown (Sender: TObject; Button: TMouseButton; p>
Shift: TShiftState ; X, Y: Integer); procedure FormPaint (Sender: TObject); p>
procedure ShowPole; procedure Mixer; procedure NewGame; procedure Formmas; procedure N11Click (Sender: TObject); procedure N7Click (Sender: TObject) ; procedure N2Click (Sender: TObject); procedure N3Click (Sender: TObject); procedure N6Click (Sender: TObject); procedure N8Click (Sender: TObject); procedure N9Click (Sender: TObject); procedure N10Click (Sender: TObject); private p>
(Private declarations) public p>
(Public declarations) end;var
Form1: TForm1; p>
implementation p>
uses Progr, Unit3; p>
($ R *. dfm) p>
var wc, hc, h, w: integer; fname: string;pole: array of array of byte;ex, ey: integer;stp: array of array of byte;
((1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12), (13, 14, 15, 0))pic: TBitmap;procedure TForm1.NewGame;vari, j: integer;begintry pic.LoadFromFile (fname);except on EFopenError do begin p>
ShowMessage ( 'Помилка звертання до файлу' + fname); p>
Form1.Close; end;end;hc: = Pic.Height div H;wc: = Pic.Width div W;
ClientWidth: = wc * W;
ClientHeight: = hc * H;for i: = 1 to H do for j: = 1 to W do pole [i, j]: = stp [i, j];
Form1.Mixer;
Form1.ShowPole;end;function Finish: boolean;var row, col: integer; i: integer;begin row: = 1; col: = 1; p>
Finish: = True; for i: = 1 to 15 dobegin if pole [row, col] i then begin p>
Finish: = False; break; end; if col <4 then inc (col) else begin col: = 1; inc (row); end; end;end;procedure TForm1.Formmas;vari, j: integer;begin
SetLength (stp, H 1, W +1);
SetLength (pole, H 1, W +1);for i: = 1 to H dofor j: = 1 to W dostp [i, j]: = h * (i-1) + j;stp [H, W]: = 0end;procedure Move (cx, cy: integer);var r: integer;begin if not ((abs (cx-ex) = 1) and (cy-ey = 0) or p>
(abs (cy-ey) = 1) and (cx-ex = 0)) then exit; p>
Pole [ey, ex]: = Pole [cy, cx]; p>
Pole [cy, cx]: = 0; ex: = cx; ey: = cy ; p>
Form1.ShowPole; if Finish then begin pole [H, W]: = H * W; p>
Form1.ShowPole; r: = MessageDlg ( 'Мета досягнута!' + # 13 + p>
'Ще раз?', mtInformation, [mbYes, mbNo], 0); if r = mrNo then Form1.Close; p>
Form1.NewGame; end;end; procedure TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var cx, cy: integer;begincx: = Trunc (X/wc) + 1;cy: = Trunc (Y/hc) +1;
Move (cx, cy);end; procedure TForm1.ShowPole;var
Source, Dest: Trect; sx, sy: integer; i, j: integer;begin for i: = 1 to W do for j: = 1 to H do begin sy: = ((pole [i, j] -1) div W) * hc; sx: = ((pole [i, j] -- 1) mod W) * wc; p>
Source: = Bounds (sx, sy, wc, hc); p>
Dest: = Bounds ((j-1) * wc, ( i-1) * hc, wc, hc); if pole [i, j] 0 then Canvas.CopyRect (Dest, pic.Canvas, Source) else Canvas.Rectangle ((j-1) * wc, (i-< br>1) * hc, j * wc, i * hc); end;end;procedure TForm1.Mixer;var x1, y1: integer; x2, y2: integer; d: integer; i: integer;begin x1: = H; y1: = W; randomize; for i: = 1 to 150 do begin repeat x2: = x1; y2: = y1; d: = random (4) +1; case d of p>
1: dec (x2); p>
2: inc (x2); p>
3: dec (y2); p>
4: inc (y2 ); end; until (x2> = 1) and (x2 = 1) and (y2 p>