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