МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Арканоид на Паскале

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

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

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

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

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

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

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

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


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.