Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
224.26 Кб
Скачать

2.2 Робота з програмою

Для роботи з програмою потрібний комп'ютер і програма Borland Delphi. Робота починається із запуску файлу Project1.exe засобами програми. При запуску програми з'являється вікно не запущеної гри, наведеної на малюнку 2.1, яку у меню «Гра» потрібно запустити натиснувши «нова гра». Вихід можна здійснити за допомогою натискання «Вихід» у меню «Гра». Вибрав пункт меню «?» - можливо отримати інформацію про розробника програми або про її правила. Вибрав пункт меню «Гра» - користувач повинен обрати «Нова гра». Після вибору цього параметру ми бачимо вікно програми початку гри. Натиская клавіши «←», «→», «↑» або «↓»,ми маємо можливість керувати пакманом.

2.3 Екранні форми

Вікно не запущеної гри зображене на (Рис2.1). Вікно у випадку виграшу зображено на (Рис.2.2). Вікно у випадку програшу зображено на (Рис.2.3).На (Рис.2.4) ми бачимо вікно програми з інформацією.

2.1 Вікно початку гри

2.2 Вікно у випадку виграшу

2.3 Вікно у випадку програшу

Рис.2.4 Вікно програми з інформацією про програму

Висновки

Курсова робота виконана з метою закріплення отриманих теоретичних і практичних знань при вивченні дисципліни «Об’єктно-орієнтоване програмування».

Курсова робота являє собою програму, написану мовою Object Pascal з використанням принципів об’єктно-орієнтованого програмування. При розробці програми були створені нові класи об’єктів зі своїми властивостями та методами.

Також були відпрацьовані основні етапи створення програми: постановка задачі,розробка алгоритму, складання програми, тестування.

Література

  1. Т. Бадд «Об’єктно-ориєнтоване програмування».

Додаток а лістинг програми

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, ExtCtrls, ComCtrls;

type

TPacman = class(TForm)

fon: TImage;

MainMenu1: TMainMenu;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

Timer1: TTimer;

sb: TStatusBar;

procedure FormCreate(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure N4Click(Sender: TObject);

procedure N3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type ghost = record

x,y:integer;

DX,DY: integer;

end;

var

Pacman: TPacman;

f: text;

i,j: integer;

x,y: integer;

score1: integer;

live: integer;

pole: array[1..17,1..17] of byte;

score: integer;

ss: integer = 1;

pic,pic1,pic2,pic3,pic4,kadr:tbitmap;

ghosts:array[1..4] of ghost;

implementation

{$R *.dfm}

procedure move;

var hi,hj,hx,hy:integer;

begin

for i:=1 to 4 do

begin

if random(40)=12 then

begin

ghosts[i].dx:=random(3)-1;

if ghosts[i].dx=0 then ghosts[i].dy:=random(3)-1 else ghosts[i].dy:=0;

end;

case pole[ghosts[i].y+ghosts[i].dy,ghosts[i].x+ghosts[i].dx]of

0: begin

pole[ghosts[i].y,ghosts[i].x]:=0;

pole [ghosts[i].y+ghosts[i].dy,ghosts[i].x+ghosts[i].dx]:=4;

ghosts[i].x:=ghosts[i].x+ghosts[i].dx;

ghosts[i].y:=ghosts[i].y+ghosts[i].dy;

end;

3: begin

pole[ghosts[i].y,ghosts[i].x]:=3;

pole [ghosts[i].y+ghosts[i].dy,ghosts[i].x+ghosts[i].dx]:=4;

ghosts[i].x:=ghosts[i].x+ghosts[i].dx;

ghosts[i].y:=ghosts[i].y+ghosts[i].dy;

end;

2: begin

pole[ghosts[i].y,ghosts[i].x]:=0;

pole [ghosts[i].y+ghosts[i].dy,ghosts[i].x+ghosts[i].dx]:=4;

ghosts[i].x:=ghosts[i].x+ghosts[i].dx;

ghosts[i].y:=ghosts[i].y+ghosts[i].dy;

x:=2; y:=2;

live:=live-1;

end;

1: begin

ghosts[i].dx:=-ghosts[i].dx;

ghosts[i].dy:=-ghosts[i].dy;

pole[ghosts[i].y,ghosts[i].x]:=0;

pole [ghosts[i].y+ghosts[i].dy,ghosts[i].x+ghosts[i].dx]:=4;

ghosts[i].x:=ghosts[i].x+ghosts[i].dx;

ghosts[i].y:=ghosts[i].y+ghosts[i].dy;

end;

end;

end;

end;

procedure ris;

begin

for i:=1 to 17 do

for j:=1 to 17 do

case pole[i,j] of

0: Pacman.fon.Canvas.Draw(j*32,i*32,pic2);

1: Pacman.fon.Canvas.Draw(j*32,i*32,pic);

2: Pacman.fon.Canvas.Draw(j*32,i*32,kadr);

3: Pacman.fon.Canvas.Draw(j*32,i*32,pic3);

4: Pacman.fon.Canvas.Draw(j*32,i*32,pic4);

end;

end;

procedure newgame;

var s: string;

n: integer;

begin

x:=2; y:=2;

score1:=200;

score:=0;

live:=4;

AssignFile(f, 'level.txt');

Reset(f);

n:=1;

for i:=1 to 17 do

begin

readln(f,s);

for j:=1 to 17 do

begin

pole[i,j]:=strtoint(copy(s,j,1));

if pole[i,j]=4 then

begin

ghosts[n].y:=i;

ghosts[n].x:=j;

ghosts[n].dx:=random(3)-1;

if ghosts[n].dx=0 then ghosts[n].dy:=random(3)-1 else ghosts[n].dy:=0;

inc(n);

end;

end;

end;

ris;

close(f);

end;

procedure TPacman.FormCreate(Sender: TObject);

begin

score1:=200;

score:=0;

sb.Panels[5].Text:=inttostr(135);

sb.Panels[3].Text:=inttostr(0);

sb.Panels[1].Text:=inttostr(live);

pic:=tbitmap.Create;

pic.LoadFromFile('sprite.bmp');

pic1:=tbitmap.Create;

pic1.LoadFromFile('sprite1.bmp');

pic2:=tbitmap.Create;

pic2.LoadFromFile('sprite2.bmp');

pic3:=tbitmap.Create;

pic3.LoadFromFile('sprite3.bmp');

pic4:=tbitmap.Create;

pic4.LoadFromFile('mmm.bmp');

kadr:=tbitmap.Create;

kadr.LoadFromFile('1.bmp');

newgame;

end;

procedure TPacman.N2Click(Sender: TObject);

begin

newgame;

timer1.Enabled:=true;

end;

procedure TPacman.Timer1Timer(Sender: TObject);

var x1,y1: integer;

x2,y2: integer;

begin

begin

inc(ss);

case ss of

1: kadr.LoadFromFile('1.bmp');

2: kadr.LoadFromFile('2.bmp');

3: kadr.LoadFromFile('3.bmp');

4: kadr.LoadFromFile('4.bmp');

5: kadr.LoadFromFile('1.bmp');

6: kadr.LoadFromFile('5.bmp');

7: kadr.LoadFromFile('6.bmp');

8: kadr.LoadFromFile('7.bmp');

9: kadr.LoadFromFile('8.bmp');

10:kadr.LoadFromFile('5.bmp');

end;

if ss = 5 then ss:=0;

if ss = 10 then ss:=6;

x1:=0; y1:=0;

if getkeystate(vk_left)<0 then

begin

ss:=5;

x1:=-1;

y1:=0;

end;

if getkeystate(vk_right)<0 then

begin

ss:=1;

x1:=1;

y1:=0;

end;

if getkeystate(vk_up)<0 then

begin

y1:=-1;

x1:=0;

end;

if getkeystate(vk_down)<0 then

begin

y1:=1;

x1:=0;

end;

case pole[y+y1,x+x1] of

0: begin

pole[y,x]:=0;

pole [y+y1,x+x1]:=2;

x:=x+x1;y:=y+y1;

end;

3:

begin

pole[y,x]:=0;

pole [y+y1,x+x1]:=2;

x:=x+x1;y:=y+y1;

score:=score+5;

score1:=score1-5;

sb.Panels[3].Text:=inttostr(score);

sb.Panels[5].Text:=inttostr(score1);

if score1=0 then

begin

timer1.Enabled:=false;

ShowMessage(' Вы победили '#13' Поздравляю ');

end;

end;

4:

begin

pole[y,x]:=0;

pole [y+y1,x+x1]:=4;

x:=2; y:=2;

live:=live-1;

end;

end

end;

sb.Panels[1].Text:=inttostr(live);

if live=0 then

begin

timer1.Enabled:=false;

ShowMessage(' Вас съели ');

end;

move;

ris;

end;

procedure TPacman.FormClose(Sender: TObject; var Action: TCloseAction);

begin

pic.Free;

pic1.Free;

pic2.Free;

pic4.Free;

end;

procedure TPacman.N4Click(Sender: TObject);

begin

showmessage('курсова робота з об''''єктно орієнтованого програмування'+#10+#13+' виконала ст.гр ПЗ-10/9-1Д Авчарова Анжеліка');

end;

procedure TPacman.N3Click(Sender: TObject);

begin

Close;

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]