Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
74
Добавлен:
10.12.2013
Размер:
211.46 Кб
Скачать

Тело игры

begin

sc:=0; Pole;

Telega; Ball;

repeat

Telega; Ball; Score(sc,7);

if Mouse=False then begin

if GetKey(kbRight) then MoveK(TS);

if GetKey(kbLeft) then MoveK(-TS); end;

if Mouse=True then MoveM(TS);

ActiveBall;

CheckRange;

CheckBricks;

if CheckLose then begin InitVars; {InitBricks; DrawBricks;}

SetColor(4); OutTextXY(MaxX div 2-50,250,'TRY AGAIN !'); Delay(3000);

SetColor(0); OutTextXY(MaxX div 2-50,250,'TRY AGAIN !');

end;

if CheckWin then begin ClearDevice; InitVars; InitBricks; DrawBricks; Pole;

end;

Telega; Ball;

dPause:=dPause+0.0001;

Delay(30);

if dPause>20 then dPause:=0;

until GetKey(kbEsc);

end;

procedure DoneGame;

Завершение игры

begin

DoneKBD;

CloseGraph;

end;

Основная программа:

InitKBD – инициализирует клавиатуру

Zastavka – выводит на экран заголовок программы и главное меню

InitGame присвоение начальных значений переменным, полям записей, описывающих кирпичи, вывод кирпичей на экран.

GameRun – тело игры

begin

InitKBD;

Zastavka;

InitGame;

GameRun;

DoneGame;

end.

Основной модуль

unit ArcUnit;

Interface

var Mouse:boolean;

procedure Zastavka;

procedure OutMenuStr(ns,CF: word);

procedure RunMenu;

procedure Menu;

procedure Help;

Implementation

uses graph, Crt, ArcUnitK;

const MaxNs = 2;

procedure Zastavka;

var drv,mode: Integer;

begin

drv:=vga;

mode:=2;

initgraph(drv,mode,'c:\progra~1\borland\tp\bgi');

setbkcolor(blue);

setcolor(red);

settextstyle(4,0,10);

outtextxy(95,100,'Arcanoid');

setcolor(white);

settextstyle(3,0,0);

outtextxy(150,250,'Esc - begin game');

outtextxy(150,285,'F1 - help');

outtextxy(150,310,'F2 - control');

repeat ReadKey;

if GetKey(kbEsc) or GetKey(13) then begin Break; Exit; end;

if GetKey(60) then begin Menu; Break; end;

if GetKey(59) then begin Help; Break; end;

until KeyPressed;

end;

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

procedure OutMenuStr(ns,CF: word);

var im : word;

Begin

GotoXY( 28,7); Write('Выбор управления');

Вывод меню выбора управления

TextColor(white);TextBackGround(CF);

case ns of

1:begin GotoXY(20,10); for im:=1 to 30 do Write(' ');

GotoXY(20,10); Write('1.Управление с клавиатуры.');

end;

2:begin GotoXY(20,11); for im:=1 to 30 do Write(' ');

GotoXY(20,11); Write('2.Управление мышью.');

end;

end;

End;

procedure RunMenu;

v

Циклический вывод на экран меню выбора управления

ar i : word;

begin

ClrScr; for i:=1 to MaxNs do OutMenuStr(i,0);

end;

var ns : word; Ch : char;

p

Организация меню выбора управления

rocedure Menu;

Begin

closegraph;

RunMenu; ns:=1;

repeat

if ns<>0 then OutMenuStr(ns,7);

Ch:=ReadKey;

if ns<>0 then OutMenuStr(ns,0);

case Ch of

#0:begin Ch:=ReadKey;

case Ch of

#72:if ns<>0 then if ns>1 then ns:=ns-1 else ns:=MaxNs;

#80:if ns<>0 then if ns<MaxNs then ns:=ns+1 else ns:=1;

end;

end;

#13:case ns of

1:begin Mouse:=False; Break; Zastavka end;

2:begin Mouse:=True; Break; Zastavka end;

end;

#27: begin Break; Zastavka end;

end;

until FALSE;

TextBackGround(0); ClrScr; Zastavka

End;

procedure Help;

begin

closegraph;

Вывод справки

TextBackGround(blue);

ClrScr;

Textcolor(White);

GotoXY( 35,2); Write('HELP');

GotoXY( 25,7); Write(' Управление с клавиатуры: ');

GotoXY( 25,9); Write('Действие Клавиша');

GotoXY( 25,10); Write('Влево a');

GotoXY( 25,11); Write('Вправо d');

GotoXY( 25,14); Write('Выход во время игры Esc');

GotoXY( 30,20); Write('Press Enter to Exit');

ReadLn; ClrScr; Zastavka;

end;

end.