4. procedure musik;


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


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

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


5.procedure izchez_vv_niz(var dy:t_dx_dy;x,y,i:t_kubik;var a:t_arr;var kol_kub:kol_kubik);


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


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

dy – направление движения шарика по оси Y;

x,y – текущие координаты центра шарика;

i – значение, от которого зависит какие кубики проверять на сбивание;

a – массив координат кубиков;

kol_kub – количество кубиков на данный момент;

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

dy – изменённое направление движения шарика по оси Y;

a – изменённый массив координат кубиков;

kol_kub – изменённое количество кубиков;


6. procedure bok_bok(var dx:t_dx_dy;x,y:t_kubik;var a:t_arr;var kol_kub:kol_kubik);


Назначение: определяет коснулся ли шарик кубика о левую или правую грань;


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

dx – направление движения шарика по оси X;

x,y – текущие координаты центра шарика;

a – массив координат кубиков;

kol_kub – количество кубиков на данный момент;

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

dx – изменённое направление движения шарика по оси X;

a – изменённый массив координат кубиков;

kol_kub – изменённое количество кубиков;


7. procedure death;


Назначение: выдаёт звуковой сигнал, соответствующий проигрышу одной жизни;


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

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


8. procedure ugolki(var dx,dy:t_dx_dy;x,y:t_kubik;var a:t_arr;var kol_kub:kol_kubik);


Назначение: определяет коснулся ли шарик кубика об углы;


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

dx,dy – направление движения шарика по осям X и Y;

x,y – текущие координаты центра шарика;

a – массив координат кубиков;

kol_kub – количество кубиков на данный момент;

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

dx,dy – изменённое направление движения шарика по осям X и Y;

a – изменённый массив координат кубиков;

kol_kub – изменённое количество кубиков;


9. procedure pausing(var pause:word);


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


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

pause – предполагаемая пауза;

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

pause – уже определённая пауза;


10. procedure zapis(const xs,ys:t_kubik; i:t_kubik;var a:t_arr);


Назначение: определяет на какие места в массиве записывать координаты кубика;


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

1) xs,ys – координаты шарика, которые и нужно записать в массив;

i – переменная от которой зависит с какого номера искать подходящее место для координат кубика;

a – массив координат кубиков;

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


11. procedure level(var a:t_arr;const numbering:byte;var kol_kub:kol_kubik);


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


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

a – массив координат кубиков;

numbering – номер открываемого этапа;

kol_kub – количество кубиков;

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

a – массив координат кубиков;

2) kol_kub – количество нарисованных кубиков;


12. procedure left(const koeff:byte;var x1_dv,x2_dv:t_kubik);


Назначение: движение планки влево;


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

1) koeff – коэффициент, от которого зависит размер планки;

x1_dv,x2_dv – координаты планки по оси Х;

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

x1_dv,x2_dv – изменившиеся координаты планки по оси Х;


13. procedure right(const koeff:byte;var x1_dv,x2_dv:t_kubik);


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


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

1) koeff – коэффициент, от которого зависит размер планки;

x1_dv,x2_dv – координаты планки по оси Х;

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

x1_dv,x2_dv – изменившиеся координаты планки по оси Х;


14. procedure dviguna_keyboard(const koeff:byte;var x,x1_dv,x2_dv:t_kubik;var y:t_kubik);


Назначение: ожидание нажатия клавиши для начала нового этапа, если пользователь играет на клавиатуре;


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

1) koeff – коэффициент, от которого зависит размер планки;

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

x1_dv,x2_dv – координаты планки по оси Х;

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

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

x1_dv,x2_dv – изменившиеся координаты планки по оси Х;


15. procedure dviguna_mouse(const koeff:byte;var x,x1_dv,x2_dv:t_kubik;var y:t_kubik);


Назначение: ожидание нажатия кнопки мыши для начала нового этапа, если пользователь играет мышью;


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

1) koeff – коэффициент, от которого зависит размер планки;

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

x1_dv,x2_dv – координаты планки по оси Х;

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

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

x1_dv,x2_dv – изменившиеся координаты планки по оси Х;


16. procedure zar_nar(var x,y:t_kubik;const dx,dy:t_dx_dy);


Назначение: закраска уже нарисованного шарика и нарисование нового шарика с изменёнными координатами;


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

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

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

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

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


17. function chem_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. procedure naverhu_kubiki(kol_kub:byte);


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


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

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

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

нет;


Модуль MARK_ZAS


1. procedure zastavka(s2:string);


Назначение: в начале игры используется в качестве заставки с мигающей большой надписью «MARKBALL» и ниже мигающей надписью «Click to start» ,также используется при потере всех жизней , но при этом нижняя надпись будет «You have lost» , а при прохождении всех этапов нижняя надпись будет «The end of game»;


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

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

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

нет;


2. procedure text_na_ekran;


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


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

нет;

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

нет;


3. procedure ochki(score:word);


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


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

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

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

нет;


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


1. Procedure initgr;


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


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

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


2. Procedure vostanovka_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


Информация о работе «Арканоид на Паскале»
Раздел: Информатика, программирование
Количество знаков с пробелами: 14549
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
89890
1
21

... «Программирование в среде Scratch» в начальной школе 3.1 Общие вопросы экспериментальной работы Целью проведенной экспериментальной работы была проверка методики преподавания темы «Программирование в среде Scratch» учащимся начальной школы. Задачи экспериментальной работы: 1)  реализация разработанной методики преподавания темы «Программирование в среде Scratch» учащимся начальной школы; ...

0 комментариев


Наверх