Арканоид на Паскале
; 2) выбрать чем играть:
2a) мышь
2б) клавиатура
3) выбрать скорость шарика
4) выбрать размер планки
Используемые структуры данных:
type t_kubik=0..640;
t_dx_dy=-1..1;
t_arr=array[1..494] of t_kubik;
kol_kubik=0..247;
t_kubik – значения всех переменных, используемых в программе, заданы в этих
пределах (и не более);
t_dx_dy – значение, которое принимает коэффициент, от которого зависит
направление движения по оси ОХ или ОУ;
t_arr – значения координат, которые принимает кубик, в соответствии со
своим отображением (изображением) на экране;
kol_kubik – максимальное количество кубиков;
Используемые модули:
Стандартные:
1) CRT;
2) GRAPH;
3) WINDOS – модуль требуемый сконструируемым модулем MYMOUSE;
4) STRINGS – модуль требуемый сконструируемым модулем MYMOUSE;
Сконструированные:
1) MARKEL – основные игровые подпрограммы;
2) MARK_ZAS – содержит инструментарий интерфейса (заставка, помощь,
счёт лучших игроков в конце игры);
3) MYMOUSE – работа с мышью
Спецификация подпрограмм:
МодульMARKEL
a. procedure livs(var liv:byte);
Назначение: считает оставшиеся жизни, если число жизней будет равно
нулю, то выводит на экран мигающую надпись: «YOU HAVE LOST»;
Входные данные: liv – число жизней;
Выходные данные: liv – оставшиеся количество жизней;
2. procedure perehod_level(const numbering:byte);
Назначение: выводит по середине экрана надпись, соответствующую началу
нового этапа;
Входные данные: numbering – номер нового этапа;
Выходные данные: нет;
3. procedure planka_sharik(koeff:byte);
Назначение: рисует планку, размером, определённым от значения koeff,
посередине экрана и шарик над ней;
Входные данные: koeff – число определяющее размер планки;
Выходные данные: нет;
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);
Назначение: определяет коснулся ли шарик кубика о верхнюю или нижнюю
грань;
Входные данные:
2) dy – направление движения шарика по оси Y;
3) x,y – текущие координаты центра шарика;
4) i – значение, от которого зависит какие кубики проверять на сбивание;
5) a – массив координат кубиков;
6) kol_kub – количество кубиков на данный момент;
Выходные данные:
7) dy – изменённое направление движения шарика по оси Y;
8) a – изменённый массив координат кубиков;
9) kol_kub – изменённое количество кубиков;
6. procedure bok_bok(var dx:t_dx_dy;x,y:t_kubik;var a:t_arr;var
kol_kub:kol_kubik);
Назначение: определяет коснулся ли шарик кубика о левую или правую
грань;
Входные данные:
10) dx – направление движения шарика по оси X;
11) x,y – текущие координаты центра шарика;
12) a – массив координат кубиков;
13) kol_kub – количество кубиков на данный момент;
Выходные данные:
14) dx – изменённое направление движения шарика по оси X;
15) a – изменённый массив координат кубиков;
16) 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);
Назначение: определяет коснулся ли шарик кубика об углы;
Входные данные:
17) dx,dy – направление движения шарика по осям X и Y;
18) x,y – текущие координаты центра шарика;
19) a – массив координат кубиков;
20) kol_kub – количество кубиков на данный момент;
Выходные данные:
21) dx,dy – изменённое направление движения шарика по осям X и Y;
22) a – изменённый массив координат кубиков;
23) 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 – координаты шарика, которые и нужно записать в массив;
24) i – переменная от которой зависит с какого номера искать подходящее
место для координат кубика;
25) a – массив координат кубиков;
Выходныеданные: нет
11. procedure level(var a:t_arr;const numbering:byte;var
kol_kub:kol_ku
| | скачать работу |
Арканоид на Паскале |