Арканоид на Паскале

2) dx,dy – от значения этих переменных зависит движение шарика в ту или иную сторону;

Выходные данные:

x,y – координаты шарика;

17. functionchem_play:boolean;

Назначение: определение пользователем чем играть (клавиатурой или мышью), с наглядным графическим интерфейсом;

Входные данные:

Нет;

Выходные данные:

true – играем мышью;

false – играем на клавиатуре;

18. procedure razmer_planki(var koeff:byte);

Назначение: определение пользователем размера планки;

Входные данные:

Koeff – коэффициент, определяющий размер планки;

Выходные данные:

Koeff – коэффициент, определяющий размер планки; граем мышью;

19. procedure naverhu_liv(liv:byte);

Назначение: отображение над рамкой в течение игры количества оставшихся жизней;

Входные данные:

liv – число жизней;

Выходныеданные:

нет;

20.procedure naverhu_number(numbering:byte);

Назначение: отображение над рамкой в течение игры номера текущего уровня;

Входные данные:

numbering – номер уровня;

Выходные данные:

нет;

21. procedurenaverhu_kubiki(kol_kub:byte);

Назначение: отображение над рамкой в течение игры количества оставшихся кубиков;

Входные данные:

Kol_kub – число оставшихся кубиков;

Выходные данные:

нет;

Модуль MARK_ZAS

1. procedurezastavka(s2:string);

Назначение: в начале игры используется в качестве заставки с мигающей большой надписью «MARKBALL» и ниже мигающей надписью «Clicktostart» ,также используется при потере всех жизней , но при этом нижняя надпись будет «Youhavelost» , а при прохождении всех этапов нижняя надпись будет «Theendofgame»;

Входные данные:

S2 – нижняя мигающая надпись;

Выходные данные:

нет;

2. proceduretext_na_ekran;

Назначение: используется как справка пока игра ещё не началась при нажатии клавиши «F1»;

Входные данные:

нет;

Выходные данные:

нет;

3. procedure ochki(score:word);

Назначение: в конце игры считает в соответствии с набранными очками: займёт ли данный игрок, который ввёл по запросу программы своё имя, какое-нибудь место среди представленных десяти мест; если количество набранных очков позволяет игроку занять некоторое место, то программа выводит на экран таблицу лидеров, включающую в себя имя данного игрока, в противном случае на экран всё же будет выведена таблица лидеров, но имени данного игрока содержаться там не будет;

Входные данные:

Score – количество набранных в течении игры очков;

Выходные данные:

нет;

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

1. Procedureinitgr;

Назначение: инициализирует графику в режиме vgahi;

Входные данные: нет;

Выходные данные: нет;

2. Procedurevostanovka_colors;

Назначение: восстанавливает цвета со стандартными оттенками;

Входные данные: нет;

Выходные данные: нет;

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

program mark_ball;

uses graph,crt,mymouse,markel,mark_zas;

procedure initgr;

var grdriver,grmode:integer;

begin

grdriver:=vga;

grmode:=vgahi;

initgraph(grdriver,grmode,'');

if GraphResult <> grOk then halt;

end;

procedure vostanovka_colors;

begin

setrgbpalette(black,0,0,0);

setrgbpalette(blue,0,0,40);

setrgbpalette(green,0,40,0);

setrgbpalette(cyan,0,40,40);

setrgbpalette(red,40,7,7);

setrgbpalette(magenta,40,0,40);

setrgbpalette(brown,40,30,0);

setrgbpalette(lightgray,49,49,49);

setrgbpalette(darkgray,26,26,26);

setrgbpalette(lightblue,0,0,63);

setrgbpalette(lightgreen,9,63,9);

setrgbpalette(lightcyan,0,63,63);

setrgbpalette(lightred,63,10,10);

setrgbpalette(lightmagenta,44,0,63);

setrgbpalette(yellow,63,63,18);

setrgbpalette(white,63,63,63);

end;

var y_planka,xmax,

x1_dv,x2_dv,x,y,i:t_kubik;

x_get,y_get,x_get_pred:word;

dx,dy:t_dx_dy;

a:t_arr;

numbering,liv:byte;

kol_kub:kol_kubik;

lb,rb,tb,dviguna:boolean;

buttoncount,errorcode,koeff:byte;

pause:word;

score:integer;

s2:string;

begin

s2:='Click to start';

initgr;

zastavka(s2);

vostanovka_colors;

setlinestyle(0,0,1);

randomize;

cleardevice;

xmax:=getmaxx-radius-1;

y:=getmaxy-shir-radius-1;

y_planka:=getmaxy-shir-radius-1;

liv:=10;

score:=-10;

dviguna:=chem_play;

pausing(pause);

razmer_planki(koeff);

for numbering:=1 to 10 do

begin

perehod_level(numbering);

cleardevice;

planka_sharik(koeff);

level(a,numbering,kol_kub);

naverhu_number(numbering);

naverhu_liv(liv);

naverhu_kubiki(kol_kub,score);

dx:=-1;

dy:=-1;

{а ¬Є }

setcolor(random(14)+1);

rectangle(0,21,getmaxx,getmaxy);

if dviguna then dviguna_mouse(koeff,x,x1_dv,x2_dv,y)

else dviguna_keyboard(koeff,x,x1_dv,x2_dv,y);

while kol_kub>0 do

begin

zar_nar(x,y,dx,dy);

delay(pause);

if (y=radius+1+21) or

((x1_dv<x) and (x<x2_dv) and (y=y_planka)) then

begin dy:=-dy; musik; end else

if (x=xmax) or (x=radius+1) then

begin dx:=-dx; musik; end else

if y=y_planka then

begin

setcolor(0);

circle(x,y,radius);

setfillstyle(0,0);

bar3d(x1_dv,y1_dv,x2_dv,y2_dv,0,false);

dy:=-1;

death;

livs(liv,score);

case dviguna of

true:dviguna_mouse(koeff,x,x1_dv,x2_dv,y);

false:dviguna_keyboard(koeff,x,x1_dv,x2_dv,y);

end;

end;

case x of

1 49: begin i:=37;izchez_vv_niz(dy,x,y,i,a,kol_kub,score); end;

50 99: begin i:=75;izchez_vv_niz(dy,x,y,i,a,kol_kub,score); end;

100 148:begin i:=113;izchez_vv_niz(dy,x,y,i,a,kol_kub,score); end;

149 197:begin i:=151;izchez_vv_niz(dy,x,y,i,a,kol_kub,score); end;

198 246:begin i:=189;izchez_vv_niz(dy,x,y,i,a,kol_kub,score); end;

247 295:begin i:=227;izchez_vv_niz(dy,x,y,i,a,kol_kub,score); end;

296 344:begin i:=265;izchez_vv_niz(dy,x,y,i,a,kol_kub,score); end;


Страница: