Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Реферат: Разработка игровой программыРеферат: Разработка игровой программыМИНИСТЕРСТВО ОБРАЗОВАНИЯ РОСИЙСКОЙ ФЕДЕРАЦИИ Таганрогский государственный радиотехнический университет Кафедра вычислительной техники_____________________________________________________________________Дистанционное обучение2000 – 2001 учебный год КУРСОВАЯ РАБОТА по курсу ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯСтудента группы ВД – 49 Каретина Флориана Викторовича Задание выполнил ________________ _____________________ подпись студента дата выполнения задания Задание проверил ________________ _____________________ оценка подпись преподавателя _______________________ дата проверки задания Рецензия преподавателя______________________________________________________________________ ______________________________________________________________________ ______________________________________________________________________ ______________________________________________________________________ ______________________________________________________________________ ОГЛАВЛЕНИЕ 1. Постановка задачи 3 стр. 2. Входные данные 3 стр. 3. Выходные данные 3 стр. 4. Текст программы 4 стр. 1. Постановка задачи. Необходимо
разработать
игровую программу
«Арканоид».
Дощечки для
отбивания
шарика надо
разместить
слева и справа.
Правая дощечка
должна управляться
клавишами «A»
и «Z»
(вверх и
вниз соответственно),
а правая дощечка
должна управляться
клавишами «L»
и « 2. Входные данные. 1. Управление дощечками пользователем. 2. Положение дощечек при приближении шарика к краям экрана. 3. Выходные данные.
Текст программы 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. |
|
|