реферат, рефераты скачать Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
реферат, рефераты скачать
реферат, рефераты скачать
МЕНЮ|
реферат, рефераты скачать
поиск
Арканоид на Паскале

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

Министерство общего и профессионального образования РФ

Белгородская Государственная Технологическая Академия

Строительных Материалов.

Кафедра ПОВТиАС

[pic]

Выполнил:

Студент факультета АПиИТ

Группы ПВ-22

Маркелов Денис

Руководитель:

Белгород – 2000.

СОДЕРЖАНИЕ

1. ПРЕДИСЛОВИЕ

2. ВВЕДЕНИЕ

3. ЗАДАНИЕ КУРСОВОЙ РАБОТЫ

4. ПРАВИЛА ПОЛЬЗОВАНИЯ ПРОГРАММОЙ «АРКАНОИД»

5. ИСПОЛЬЗУЕМЫЕ СТРУКТУРЫ ДАННЫХ

6. ИСПОЛЬЗУЕМЫЕ МОДУЛИ

7. СПЕЦИФИКАЦИЯ ПОДПРОГРАММ

8. ТЕКСТ ПРОГРАММЫ И СКОНСТРУИРОВАННЫХ МОДУЛЕЙ

9. правила пользования дополнительной программой для построения уровней

«MARKEDIT»

10. СПЕЦИФИКАЦИЯ ПОДПРОГРАММ В ПРОГРАММЕ «MARKEDIT»

11. ТЕКСТ ПРОГРАММЫ «MARKEDIT” И СКОНСТРУИРОВАННЫХ МОДУЛЕЙ

12. СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

Предисловие

Язык Турбо Паскаль – это один из самых распространённых языков

программирования микрокомпьютеров. Он разработан фирмой «Борланд» как

диалект стандартного языка Паскаль, но благодаря своей популярности сам

стал стандартом языка программирования 8- и 16-разрядных микрокомпьютеров.

К важнейшим достоинствам языка Турбо Паскаль относятся небольшой размер

компилятора, высокая степень соответствия стандартному Паскалю, очень

быстрая компиляция программ, объединение компилятора с интерактивным

экранным редактором, предупреждение об ошибках на уровне исходной

программы, обширная библиотека подпрограмм и полезные расширения,

упрощающие системное программирование.

Введение

Одной из основных проблем, с которой сталкиваются в процессе

программирования, является написание программы, не содержащей ошибок.

Ошибку наиболее полно можно определить как расхождение поведения программы

с ожиданиями пользователя. Сюда входит как несоответствие результатов

исходным данным, так и другие, порой более опасные эффекты: зацикливание,

аварийная остановка программ и т.п.

Наиболее явно наблюдаемыми историческими тенденциями в программировании

являются непрерывный рост пользовательских требований, лавинообразное

усложнение функциональности программы и, как следствие, - усложнение её

разработки.В связи с увеличением трудоёмкости програмных средств возникла

необходимость выработки интеллектуальных инструментов, позволяющих

разработчикам справляться с возросшей сложностью своего труда.

В настоящий момент можно утверждать, что практически каждая программа

составляется с применением той или иной технологии программирования.

«В связи с тем,что за последние десять или пятьнадцать лет

производительность вычислительных машин увеличилась в тысячи раз,

пользователи стали гораздо более бесцеремонными при выборе проблем, которые

они считают «технически разрешимыми». Пользователи хотят, чтобы размеры,

сложность и изощрённость программ увеличивалась исключительно быстрыми

темпами, и в последние годы стало очевидным, что в целом наши

программистские возможности не поспевают за этими неумеренными аппетитами».

По мере того, как мощь компьютеров росла, а область применения всё

расширялась, увеличивались не только размеры, и сложность программ, но и

количество ошибок в них.

Главной задачей современного программиста при написании программы является

не подвегание её бесконечным тестированиям, а тщательный, полный анализ

исходного текста программы, а также отладка программы с помощью

дополнительных програмных средств.

Задание на проектирование

Разработать алгоритм игры «АРКАНОИД», цель которой заключается в наборе как

можно большего количества очков, которые увеличиваются при выбивании

очередного кубика.

При выбивании всех кубиков текущего уровня осуществляется переход на

следующий уровень, количество которых – десять.

В конце игры в зависимости от количества набранных очков, введённое по

запросу программы имя игрока должно быть занесено в десятку лучших и

записано в файл.

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

1) № текущего этапа;

2) количество оставшихся жизней, первоначально которых – 10;

1) количество оставшихся кубиков;

2) количество набранных очков.

Правила пользования программой:

1) запустить MARKBALL.EXE

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_kubik);

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

рисует их;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3) 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 – коэффициент, от которого зависит размер планки;

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

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

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

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

4) 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 – координаты шарика;

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

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

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

g. 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);

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.