Разработка игровой программы

8310
знаков
0
таблиц
0
изображений

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОСИЙСКОЙ ФЕДЕРАЦИИ

Таганрогский государственный радиотехнический университет

Кафедра вычислительной техники _____________________________________________________________________ Дистанционное обучение

2000 – 2001 учебный год

КУРСОВАЯ РАБОТА

по курсу

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ

Студента группы ВД – 49


Каретина Флориана Викторовича


Задание выполнил ________________ _____________________

подпись студента дата выполнения задания


Задание проверил ________________ _____________________

оценка подпись преподавателя


_______________________

дата проверки задания


Рецензия преподавателя

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________


ОГЛАВЛЕНИЕ

1. Постановка задачи 3 стр.

2. Входные данные 3 стр.

3. Выходные данные 3 стр.

4. Текст программы 4 стр.


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


Необходимо разработать игровую программу «Арканоид». Дощечки для отбивания шарика надо разместить слева и справа. Правая дощечка должна управляться клавишами «A» и «Z» (вверх и вниз соответственно), а правая дощечка должна управляться клавишами «L» и «0 then {если координата по Х больше 0}

Begin

x:=x-1; {то уменьшить ее на 1}

SetCursor(x,y); {установить на новую координату курсор}

End

end;

kbRight: {стрелка вправо}

begin

x:=x+1; {увеличить координату по Х на единицу}

SetCursor(x,y); {установить на новую координату курсор}

end;

kbUp: {стрелка вверх}

begin

if y>0 then {если координата по Y больше 0}

Begin

y:=y-1; {то уменьшить ее на 1}

SetCursor(x,y); {установить на новую координату курсор}

End

end;

kbDown: {стрелка вниз}

begin

y:=y+1; {увеличить координату по Y на 1}

SetCursor(x,y); {установить на новую координату курсор}

end;

end;

Case Event.ScanCode of {проверка скан-кода клавиатуры}

57: {если пробел}

begin

If GetState(sfCursorVis) Then {если курсор виден}

TScroller.HideCursor {то скрыть его}

Else

TScroller.ShowCursor; {иначе показать его}

end;

end;

End;

end;

End;


Описание игровой программы «Стрельба по мишени».


Игровая программа состоит из трех процедур (minv — уменьшение кол-ва патронов, intro — заставка, go — конец игры) и основного блока программы.

Процедура minv (уменьшение количества патронов).

kv:=kv-1; {уменьшение значение переменной kv (в основной программе она фигурирует как количество патронов) }

setfillstyle(1,9); {установка стиля заполнения фона}

bar((20-kv)*10+415,4,(20-kv)*10+425,12); {стирание одного патрона с экрана}

Процедура intro; {Заставка}

Выводит заставку игры.

settextstyle(0,0,15); {установка стиля текста}

setcolor(12); {установка цвета}

outtextxy(140,100,'ТИР'); {вывод текста}

settextstyle(0,0,2);

setcolor(10);

outtextxy(130,290,'ESC - ');

setcolor(14);

outtextxy(220,290,'Выход из программы');

settextstyle(0,0,1);

tp:='НАЖМИТЕ ЛЮБУЮ КНОПКУ ДЛЯ НАЧАЛА ИГРЫ';

settextstyle(0,0,1);

setcolor(11);

outtextxy(320-trunc(length(tp)*4),340,tp); {вывод текста с расчетом по центру}

a:=readkey;

if ord(a)=27 then exi:=true; {если нажата клавиша Esc – выйти из игры}

setfillstyle(1,0);

bar(100,30,600,350);

Процедура go – выводит заставку конца игры

procedure go; {Конец игры}

begin

settextstyle(0,0,5); {установка стиля вывода текста}

setcolor(2); {установка цвета}

outtextxy(50,200,'ВСЕ,ДОИГРАЛИСЬ');

settextstyle(0,0,2);

readkey;

UROV:=1;MENU:=true;oko:=0;

end;

Основное тело программы

begin

d:=vga;initgraph(d,r,''); {инициализация графики}

setgraphmode(2); {установка графического режима}

randomize; {вызов генератора случайных чисел}

urov:=1;oko:=0; mus:=true; sou:=true;menu:=true; {первоначальная установка переменных}

repeat {начало основного цикла программы}

{Cоздание интерфейса}

cleardevice; {очистака экрана}

setfillstyle(1,1); {установка стиля заполнения фона}

bar(0,0,640,2); {рисование прямоугольников вокруг рабочей области}

bar(0,0,2,480);

bar(0,480,640,478);

bar(640,480,638,0);

setfillstyle(1,9);

bar(2,2,638,17);

bar(2,2,5,478);

bar(2,478,638,475);

bar(638,2,635,478);

setfillstyle(1,3);

bar(5,17,635,19);

bar(5,17,7,475);

bar(5,475,635,473);

bar(635,17,633,475);

setfillstyle(9,14);

setcolor(14); {установка цвета рисования}

moveto(7,460); {перемещение графического курсора в указанные координаты}

for i:=1 to 62 do {рисование песка холмиками}

lineto(i*10+7,460+random(10));

lineto(633,460);

line(7,473,633,473);

line(7,473,7,460);

line(633,473,633,460);

floodfill(9,469,14); {заполнение стилем области, расположенной либо внутри замкнутого контура, либо вне его}

setlinestyle(0,0,1); {установка стиля линий}

setfillstyle(8,6); {установка стиля заполнения фона}

bar(260,408,380,470);

setfillstyle(1,1);

setcolor(14);

line(260,408,260,470);

line(260,408,380,408);

line(380,408,380,470);

fillellipse(320,408,23,15); {вычерчивание контура эллипса текущим цветом и заполнение ограниченной контуром области экрана текущим узором}

setlinestyle(0,3,3);

setcolor(11);

line(320,391,320,376);

fi:=pi;tzm:=40;tzs:=40;

settextstyle(0,0,2);

cou:=0; kv:=20; ov:=1; ex:=0;

setfillstyle(1,15);setcolor(7);

bar(250,6,310,12);

setfillstyle(1,0);

bar(17,2,220,17);

setcolor(12);

outtextxy(20,3,'Cчет:');

setcolor(11);

setfillstyle(1,11);

for i:=1 to kv do fillellipse(i*10+420,8,3,3); {рисование патронов}

if menu then intro; {если menu=true, то вызвать процедуру intro (заставка игры)}

menu:=false;

if exi then goto 1; {если exi=true (выход), то перейти на метку 1}

repeat

if keypressed then a:=readkey;

settextstyle(0,0,1);

outtextxy(280,280,'Нажмите ENTER');

setcolor(random(16));

settextstyle(0,0,2);

str(urov,em);

outtextxy(270,200,concat('УРОВЕНЬ ',em)); {вывод текста с помощью процедуры конкатенации}

str(urov*1000,em);

outtextxy(190,240,concat('Наберите ',em,' очков'));

until ord(a)=13; {выход из цикла по клавише Enter}

setfillstyle(1,0);

bar(180,200,500,300);

gettime(q1,min,sec,q2); {получение системного времени}

mk:=min+1; {увеличение минут на 1}

sk:=sec;

if mk>=60 then begin {если количество минут больше 60,}

hk:=q1+1; {то количество часов увеличить на 1}

mk:=0; {минуты обнулить}

end;

repeat

gettime(q1,min,sec,q2); {получение системного времени}

setfillstyle(1,1); {установка стиля заполнения}

setcolor(4); {установка цвета рисования}

if mk=min then rk:=60-abs(sk-sec) else rk:=abs(sk-sec);

bar(250,6,250+abs(rk),12);

if not(bm) then begin

gettime(q1,min,sec,q2); {получение системного времени}

po:=random(3);

if sec+po>=59 then begin

tpm:=min+1;

tps:=0;

end

else begin

tpm:=min;

tps:=sec+po;

end;

end;

xnp:=round(sin(fi)*24+320);

ynp:=round(cos(fi)*15+406);

xkp:=round(sin(fi)*38+320);

ykp:=round(cos(fi)*30+406);

setlinestyle(0,3,3);

setcolor(11);

line(xnp,ynp,xkp,ykp);

ok:=false;

if keypressed then begin

a:=readkey;

if a=chr(77) then begin fi:=fi-0.05; ok:=true; end; {Поворот дула влево}

if a=chr(75) then begin fi:=fi+0.05; ok:=true; end; {Повоорт дула вправо}

if ord(a)=27 then menu:=true; {Выход в меню}

if fi

if fi>3*pi/2 then fi:=3*pi/2;

if a=' ' then begin {Выстрел}

if (not(fire.v)) and (not(ok)) then begin

minv;

for d:=1 to 100 do begin

if sou then sound(random(200)+100);delay(1);

end;

nosound;

fire.v:=true;

fire.r:=35;

fire.si:=sin(fi)*1.1;

fire.co:=cos(fi);

ok:=true;

fire.xs:=-10;

fire.ys:=-10;

end;

s:=s+1;

end;

end;

if (kv=0) and (not(fire.v)) then ex:=ex+1;

if fire.v then begin {Полет снаряда}

setfillstyle(1,0);

setcolor(0);

bar(fire.xs-4,fire.ys-4,fire.xs+4,fire.ys+4);

xv:=round(fire.si*fire.r+320);

yv:=round(fire.co*fire.r+406);

fire.r:=fire.r+5;

fire.xs:=xv;fire.ys:=yv;

if (fire.xs=622)

or (fire.ys=tps) and not(mn) then begin

bm:=true;mn:=true;

xm:=random(560)+30;

ym:=random(320)+30;

vm:=random(2)+3;

if vm+sec>=59 then begin

tzm:=min+1;

tzs:=abs(vm+sec-60);

end

else begin

tzm:=min;

tzs:=vm+sec;

end;

repeat

nch:=random(5)+1;

mi:=20+nch*5; {Размер мишени}

until nch=tzm) and (sec>=tzs) then begin

bm:=false;mn:=false;

setfillstyle(1,0);

bar(xm,ym,xm+mi,ym+mi);xm:=-1300;ym:=-1300;

end;

if ok then begin

setcolor(0);

line(xnp,ynp,xkp,ykp);

end;

until (ord(a)=27) or (ex=1) or ((mk=min) and (sec>=sk));

oko:=oko+cou;

str(oko,em);

bm:=false;mn:=false;fire.v:=false;

if cou


Информация о работе «Разработка игровой программы»
Раздел: Информатика, программирование
Количество знаков с пробелами: 8310
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
38455
2
1

... программирования Турбо Паскаль. Диалог между компьютером и играющим осуществляется как в меню, так и во время самой игры.   2. СПЕЦИФИКАЦИЯ ИГРОВОЙ ПРОГРАММЫ «SIEGE» 1.   Название задачи Компьютерная игра. Название программы – «Siege». Система программирования Turbo Pascal. 2.   Описание Игра начинается с заставки, где написано название игры. Затем следует главное меню, где ...

Скачать
52402
3
6

... помещен. С компонентом связывается объект класса TStatusPanel, который определяет панели компонента. Этот компонент находится на странице Палитры компонентов Win32. 2. РАЗРАБОТКА ПРОГРАММЫ 2.1. Постановка задачи Разработать игровую программу «Морской бой», которая включает игровую панель, состоящую из двух полей для человека и компьютера. На поле расставляются 10 кораблей разного класса. Четыре ...

Скачать
39547
3
7

... те, что имеют ‘кислотные’ оттенки. Данный факт кому-то может показаться не столь значимым, но очевидно то, что желание пользователя работать с той или иной программой, будь то игровая (или какая другая программа), зачастую определяется не только сюжетом, жанром, смыслом самой игры, но и тем интерфейсом, который предлагают пользователю автор (или авторы) программы. Разработка программы ...

Скачать
33102
12
1

... до expression2. В том случае, когда значение expression1 оказывается больше значения expression2, тело цикла не будет выполнятся вовсе. 2. РАЗРАБОТКА ПРОГРАММЫ   2.1 Постановка задачи Составить программу для игры в «Морской бой» игрока с компьютером. Программа должна позволять расставлять корабли на поле 10 х 10, контролировать правильность их расстановки, давать противникам возможность ...

0 комментариев


Наверх