рефераты
Главная

Рефераты по рекламе

Рефераты по физике

Рефераты по философии

Рефераты по финансам

Рефераты по химии

Рефераты по хозяйственному праву

Рефераты по цифровым устройствам

Рефераты по экологическому праву

Рефераты по экономико-математическому моделированию

Рефераты по экономической географии

Рефераты по экономической теории

Рефераты по этике

Рефераты по юриспруденции

Рефераты по языковедению

Рефераты по юридическим наукам

Рефераты по истории

Рефераты по компьютерным наукам

Рефераты по медицинским наукам

Рефераты по финансовым наукам

Рефераты по управленческим наукам

Психология и педагогика

Промышленность производство

Биология и химия

Языкознание филология

Издательское дело и полиграфия

Рефераты по краеведению и этнографии

Рефераты по религии и мифологии

Рефераты по медицине

Рефераты по сексологии

Рефераты по информатике программированию

Краткое содержание произведений

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

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

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

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

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

Дистанционное обучение

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

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

по курсу

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


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


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


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

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


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

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


_______________________

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


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

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________


ОГЛАВЛЕНИЕ

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

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

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

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


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


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

2. Входные данные.

1. Управление дощечками пользователем.

2. Положение дощечек при приближении шарика к краям экрана.


3. Выходные данные.

  1. Перемещение дощечки по экрану при нажатии определенных клавиш.

  2. Отталкивание/непопадание шарика от дощечки.

  3. Выдача очков играющих.

  4. Звуковое сопровождение при попадании или непопадании шарика по дощечке, или отскакивания его от стенки.


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

program Game_Tenis;

uses DOS, Crt2, Graph;

var

CK, StopRun, Up1, Down1, Up2, Down2, Auto1, Auto2 :Boolean;

R1, R2, oR1, oR2, BX, BY, oBX, oBY, Step :Integer;

kX, kY, rBX, rBY :Real;

MissCount1, MissCount2 :Word;

OldInt9: procedure;

{____________________________________________________________________________}

{работа с клавиатурой по превываниям}

procedure UserInt9; interrupt;

begin

case Port[$60] of

$81: StopRun:=True; {Esc - выход}

$1E: begin CK:=True; Up1:=True; end; {вверх первая дощечка}

$9E: begin CK:=True; Up1:=False; end;

$2C: begin CK:=True; Down1:=True; end; {вниз первая дощечка}

$AC: begin CK:=True; Down1:=False; end;

$25: begin CK:=True; Up2:=True; end; {вверх вторая дощечка}

$A5: begin CK:=True; Up2:=False; end;

$32: begin CK:=True; Down2:=True; end; {вниз вторая дощечка}

$B2: begin CK:=True; Down2:=False; end;

$02: Auto1:=not Auto1; {включение/выключение авто-режима}

{для игрока 1}

$03: Auto2:=not Auto2; {включение/выключение авто-режима}

{для игрока 2}

end;


Inline ($E4/$61/$8A/$E0/$0C/$80/ {вставка в машинных кодах}

$E6/$61/$86/$E0/$E6/$61/ {для правильной работы}

$B0/$20/$E6/$20); {обработчика прерывания}

end;

{----------------------------------------------------------------------------}

{процедура установки пользовательского прерывания}

procedure SetUserInt;

begin

GetIntVec($09,@OldInt9); {сохранение старого вектора}

SetIntVec($09,Addr(UserInt9)); {установка нового}

end;

{----------------------------------------------------------------------------}

{восстановление старого вектора}

procedure SetOldInt;

begin

SetIntVec($09,@OldInt9);

end;

{----------------------------------------------------------------------------}

{процедура инициализации графического режима}

procedure InitScreen;

var

GrMode, GrDriver :Integer;

GrPath :String;

begin

GrDriver:=VGA;

GrMode:=VGAHi;

GrPath:='E:\pl\bp\bgi';

InitGraph(GrDriver, GrMode, GrPath);

SetTextStyle(2, 0, 6);

end;

{----------------------------------------------------------------------------}

{процедура обновления количества очков игроков}

procedure RefrCount;

var

s1 :String;

begin

SetFillStyle(1,0);


Bar(610, 230, 639, 250);

Str(MissCount1, s1);

OutTextXY(614,232, s1);

Bar(0, 0, 29, 479);

Str(MissCount2, s1);

OutTextXY(5,232, s1);


Bar(0, 230, 29, 250);

Str(MissCount2, s1);

OutTextXY(4,232, s1);

Bar(610, 0, 639, 479);

Str(MissCount1, s1);

OutTextXY(615,232, s1);

end;

{----------------------------------------------------------------------------}

procedure Game;

var

t1 :Integer;

ChC :Boolean;

begin

{прорисовка игрового поля}

SetColor(12);

Rectangle(30,0, 609, 479);

SetFillStyle(1, 1);

Bar(31,1, 608, 478);

{первоначальная установка переменых}

kX:=0.8;

kY:=0.3;

Step:=10;

rBX:=320;

rBY:=240;

oBX:=320;

oBY:=240;

R1:=240;

R2:=240;

oR1:=240;

oR2:=240;


repeat

{если нажата клавиша вверх и не нажата клавиша вниз}

{для игрока 1}

if Up1 and not Down1 then

begin {перемещение дощечки вверх}

R1:=R1-10;

if R1

SetColor(1); {координаты}

Line(50, oR1-48, 50, oR1+48);

SetColor(11);

Line(50, R1-48, 50, R1+48);

oR1:=R1;

end;

{если нажата клавиша вниз и не нажата клавиша вверх}

{для игрока 1}

if Down1 and not Up1 then

begin {перемещение дощечки вниз}

R1:=R1+10;

if R1>430 then R1:=430;{не пропускать ниже положенной}

SetColor(1); {координаты}

Line(50, oR1-48, 50, oR1+48);

SetColor(11);

Line(50, R1-48, 50, R1+48);

oR1:=R1;

end;

{если нажата клавиша вверх и не нажата клавиша вниз}

{для игрока 2}

if Up2 and not Down2 then

begin {перемещение дощечки вверх}

R2:=R2-10;

if R2

SetColor(1); {координаты}

Line(590, oR2-48, 590, oR2+48);

SetColor(10);

Line(590, R2-48, 590, R2+48);

oR2:=R2;

end;

{если нажата клавиша вниз и не нажата клавиша вверх}

{для игрока 2}

if Down2 and not Up2 then

begin {перемещение дощечки вниз}

R2:=R2+10;

if R2>430 then R2:=430;{не пропускать ниже положенной}

SetColor(1); {координаты}

Line(590, oR2-48, 590, oR2+48);

SetColor(10);

Line(590, R2-48, 590, R2+48);

oR2:=R2;

end;

{если включен автоматический режим для игрока 1}

if Auto1 then

begin {автоматическое перемещение дощечки}

R1:=BY;

if R1

{координаты}

if R1>430 then R1:=430;{не пропускать ниже положенной}

{координаты}

SetColor(1);

Line(50, oR1-48, 50, oR1+48);

oR1:=R1;

end;

SetColor(11);

Line(50, R1-48, 50, R1+48);

{если включен автоматический режим для игрока 2}

if Auto2 then

begin {автоматическое перемещение дощечки}

R2:=BY;

if R2

{координаты}

if R2>430 then R2:=430;{не пропускать ниже положенной}

{координаты}

SetColor(1);

Line(590, oR2-48, 590, oR2+48);

oR2:=R2;

end;

{перерисовка полета шарика}

SetColor(10);

Line(590, R2-48, 590, R2+48);


SetColor(12);

Rectangle(30,0, 609,479);


SetFillStyle(1, 1);

SetColor(1);

FillEllipse(oBX, oBY, 10, 10);


rBX:=rBX+kX*Step;

rBY:=rBY+kY*Step;

BX:=Round(rBX);

BY:=Round(rBY);

SetFillStyle(1, 15);

SetColor(7);

FillEllipse(BX, BY, 10, 10);

{если дощечка не попала}

if ChC then

begin

ChC:=False;

RefrCount; {обновить очки игроков}

end;

{столкновение шарика с дощечкой слева}

if (BX(R1-55)) and (BY

begin

kX:=-kX;

Sound(1000);

Delay(10);

NoSound;

end;

{не попадание дощечкой слева}

if (BX

begin

rBX:=580;

rBY:=R2;

kX:=Abs(kX);

Sound(700);

Delay(500);

NoSound;

Inc(MissCount1);

ChC:=True;

end;

{столкновение шарика с дощечкой справа}

if (BX>580) and (BY>(R2-55)) and (BY

begin

kX:=-kX;

Sound(1000);

Delay(10);

NoSound;

end;

{не попадание дощечкой справа}

if (BX>600) then

begin

rBX:=60;

rBY:=R1;

kX:=-Abs(kX);

Sound(700);

Delay(500);

NoSound;

Inc(MissCount2);

ChC:=True;

end;

{удар шарика об верхнюю или нижнюю стенку}

if (BY470) then kY:=-kY;

oBX:=BX;

oBY:=BY;


Delay(10);

until StopRun; {выход если нажата клавиша Esc}


end;

{============================================================================}

begin

InitScreen; {инициализация графического режима}

SetUserInt; {установка пользовательского прерывания}

Game; {непосредственно вызов игры}

SetOldInt; {восстановления старого вектора прерывания}

CloseGraph; {закрытие графического режима}

end.



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

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

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

Дистанционное обучение

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

ОТЧЕТ

о выполнении практических заданий

по курсу

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


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


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


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

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


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

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


_______________________

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


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

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________


Описание программы созданной с помощью Turbo Visual.


Начинается программа с подключения библиотек Turbo Visual:

uses App, Objects, Menus, Drivers, Editors, Views;

Основной блок программы состоит из трех команд:

Begin

MyApp.Init; {Подготовить работу программы}

MyApp.Run; {Выполнить необходимые действия}

MyApp.Done; {Завершить исполнение программы}

End.

Для создания собственной строки статуса вводим следующее описание:

type

TMyApp=object(TApplication) {Создаем объект-потомок от TApplication}

procedure InitStatusLine; virtual; {Перекрываем старый метод InitStatusLine новым}

Описание нового метода, с помощью которого создается строка статуса:

Procedure TMyApp.InitStatusLine;

Var R:TRect; {хранит границы строки статуса}

Begin

GetExtent(R); {устанавливает R в координаты всего экрана}

R.A.Y:=R.B.Y-1; {передвигает вершину выше нижней на 1 строку}

StatusLine:=New(PStatusLine, Init(R, {создает строку статуса}

NewStatusDef(0,$FFFF, {устанавливает диапазон контекстного Help}

NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit, {определяет элемент}

NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose, {другой}

nil)), {больше нет клавиш}

nil))) {больше нет определений}

End;

Формирование меню:

Описание в разделе типов:

TMyApp=object(TApplication) {Создаем объект-потомок от TApplication}

procedure InitMenuBar; virtual; {Перекрываем старый метод InitMenuBar новым}

Тело процедуры:

procedure TMyApp.InitMenuBar;

Var R:TRect;

Begin

GetExtent(R); {устанавливает R в координаты всего экрана}

R.B.Y:=R.A.Y+1;

MenuBar:=New(PMenuBar, Init(R, NewMenu( {создать полосу меню}

NewSubMenu('~F~ile', hcNoContext, NewMenu( {определить меню}

StdFileMenuItems(nil)), {стандратная функция определения элементов}

{меню File}

NewSubMenu('~W~indow', hcNoContext, NewMenu( {определить меню}

StdWindowMenuItems(nil)), {стандратная функция определения элементов}

{меню Window}

nil) {больше нет подменю}

)))); {конец полосы}

End;

Создание окон и манипуляции с ними:

Описание:

procedure NewWindow; virtual;

procedure HandleEvent(var Event:TEvent); virtual;

end;

PDemoWindow=^TDemoWindow; {тип указателя для нового объектного типа}

TDemoWindow=object(TWindow) {определение нового типа окна}

constructor Init(Bounds: TRect; WinTitle:String; WindowNo: Integer);

end;

PInterior=^TInterior;

TInterior=object(TScroller)

constructor Init(var Bounds:TRect; HS, VS: PScrollBar);

procedure Draw; virtual;

procedure HandleEvent(var Event:TEvent); virtual;

end;

Описание тела конструктора инициализации окна:

constructor TDemoWindow.Init(Bounds: TRect; WinTitle:String; WindowNo: Integer);

var

S:String[3];

Interior:PInterior;

HS, VS: PScrollBar;

begin

Str(WindowNo,S); {устанавливает номер окна в заколовке}

TWindow.Init(Bounds, WinTitle+' '+S, wnNoNumber);

GetClipRect(Bounds);

Bounds.Grow(-1,-1); {интерьер помещается внутри рамки окна}

VS:=StandardScrollBar(sbVertical+sbHandleKeyBoard); {разрешение перемещения вертикального бегунка стрелками на клавиатуре}

HS:=StandardScrollBar(sbHorizontal+sbHandleKeyBoard); {разрешение перемещения горизонтального бегунка стрелками на клавиатуре}

Interior:=New(PInterior, Init(Bounds, HS, VS));

Insert(Interior); {добавляет интерьер к окну}

end;

Описание конструктора инициализации интерьера:

constructor TInterior.Init(var Bounds:TRect; HS, VS: PScrollBar);

begin

TScroller.Init(Bounds, HS, VS);

GrowMode:=gfGrowHiX+gfGrowHiY;

end;

Описание процедуры прорисовки интерьера окна:

procedure TInterior.Draw;

begin

TScroller.Draw; {Вызов стандартной прорисовки}

WriteStr(0,0,'Текст в окне',1); {Вывод текста в окно}

TScroller.ShowCursor; {Показать курсор}

end;

Описание тела процедуры создания нового окна:

procedure TMyApp.NewWindow;

var

Window:PDemoWindow;

R: TRect;

Begin

Inc(WinCount);

R.Assign(0,0,26,7); {установка начального размера и позиции}

R.Move(Random(58),Random(16)); {случайное перемещение по экрану}

Window:=New(PDemoWindow, Init(R, 'Demo Window', WinCount));

DeskTop^.Insert(Window); {вывести окно на панель экрана}

End;

Описание тела процедуры обработки команд среды

procedure TMyApp.HandleEvent(var Event:TEvent);

Begin

TApplication.HandleEvent(Event); {действует как предок}

if Event.What=evCommand Then

Begin

case Event.Command of {но откликается на дополнительные команды}

cmNew: NewWindow; {определяет действие для команды cmNew}

else

Exit;

End;

ClearEvent(Event); {очищает событие после обработки}

end;

End;

Описание тела процедуры обработки команд в окне

procedure TInterior.HandleEvent(var Event:TEvent);

Begin

TScroller.HandleEvent(Event); {действует как предок}

case Event.What of {проверка события}

evKeyDown: {если нажата клавиша}

Begin

Case Event.KeyCode of {проверка: какая клавиша нажата}

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

begin

if x>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

cou:=cou-50;

if cou

setcolor(10);

setfillstyle(1,0);

bar(100,3,220,17);

str(cou,em);

outtextxy(100,3,em);

fire.v:=false;

setfillstyle(1,0);

setcolor(0);

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

end else begin

setfillstyle(1,10);

setcolor(10);

fillellipse(xv,yv,3,3);

end;

if (fire.xs+4>=xm) and (fire.xs-4

and (fire.ys+4>=ym) and (fire.ys-4

then begin

fire.v:=false;

setfillstyle(1,0);

setcolor(0);

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

bm:=false;mn:=false;

str((7-nch)*100,em);

setfillstyle(1,0);

bar(xm,ym,xm+mi,ym+mi);

for i:=10 to 800 do begin

sound(i);

setcolor(I);

outtextxy(xm,ym,em);

end;

nosound;

setfillstyle(1,0);

bar(xm,ym,xm+30,ym+15);

xm:=-1500;ym:=-1500;

setcolor(10);

bar(100,3,220,17);

cou:=cou+(7-nch)*100;

str(cou,em);

outtextxy(100,3,em);

end;

end;

gettime(q1,min,sec,q2);

if (min>=tpm) and (sec>=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

setfillstyle(1,nch);

bar(xm,ym,xm+mi,ym+mi);

end;

gettime(q1,min,sec,q2);

if (min>=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

until exi;

1: closegraph; {закрытие графического режима}

end.


© 2012 Рефераты, курсовые и дипломные работы.