Разработка игровой программы
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: банк дипломов, решебник 6 класс
| Добавил(а) на сайт: Софрон.
Предыдущая страница реферата | 1 2 3 4
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 fi3*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
Скачали данный реферат: Veronika, Канадцев, Черниенко, Харитонюк, Ezhov, Кузуб, Гортензия.
Последние просмотренные рефераты на тему: реферат бесплатно на тему, реферат традиции, тесты онлайн, класс.
Категории:
Предыдущая страница реферата | 1 2 3 4