МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОСИЙСКОЙ ФЕДЕРАЦИИ
Таганрогский государственный радиотехнический университет
Кафедра вычислительной техники _____________________________________________________________________ Дистанционное обучение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
Похожие работы
... программирования Турбо Паскаль. Диалог между компьютером и играющим осуществляется как в меню, так и во время самой игры. 2. СПЕЦИФИКАЦИЯ ИГРОВОЙ ПРОГРАММЫ «SIEGE» 1. Название задачи Компьютерная игра. Название программы – «Siege». Система программирования Turbo Pascal. 2. Описание Игра начинается с заставки, где написано название игры. Затем следует главное меню, где ...
... помещен. С компонентом связывается объект класса TStatusPanel, который определяет панели компонента. Этот компонент находится на странице Палитры компонентов Win32. 2. РАЗРАБОТКА ПРОГРАММЫ 2.1. Постановка задачи Разработать игровую программу «Морской бой», которая включает игровую панель, состоящую из двух полей для человека и компьютера. На поле расставляются 10 кораблей разного класса. Четыре ...
... те, что имеют ‘кислотные’ оттенки. Данный факт кому-то может показаться не столь значимым, но очевидно то, что желание пользователя работать с той или иной программой, будь то игровая (или какая другая программа), зачастую определяется не только сюжетом, жанром, смыслом самой игры, но и тем интерфейсом, который предлагают пользователю автор (или авторы) программы. Разработка программы ...
... до expression2. В том случае, когда значение expression1 оказывается больше значения expression2, тело цикла не будет выполнятся вовсе. 2. РАЗРАБОТКА ПРОГРАММЫ 2.1 Постановка задачи Составить программу для игры в «Морской бой» игрока с компьютером. Программа должна позволять расставлять корабли на поле 10 х 10, контролировать правильность их расстановки, давать противникам возможность ...
0 комментариев