Автор работы: Пользователь скрыл имя, 10 Февраля 2015 в 12:14, курсовая работа
Разработка игры является очень интересным и захватывающим процессом. Ведь данное искусство заключает в себе и совмещает множество других видов искусств. Так как для создания игры нужно: написать сценарий со связным сюжетом (если это не казуальная аркада), придумать совершенно новый и необычный игровой процесс, подобрать или написать соответствующую музыку, нарисовать красивые графические файлы или же придумать совершенно новое графическое оформление и, в конце концов, написать связывающий все это в единое целое алгоритм и запрограммировать его на определенном языке программирования.
Введение
PASCAL
Модули Pascal, используемые в программе
Модуль Crt
Разработка Программы
Постановка задачи
Алгоритм реализации работы
Алгоритм реализации игровой программы
Процедуры и функции программы
Описание пользовательского интерфейса
Заключение
Литература
ФГБОУ ВПО
Чувашский государственный университет им. И. Н. Ульянова
Кафедра информатики и вычислительной техники
Факультет информатики и вычислительной техники
Курсовая работа
по информатике
Тема: «Создание игры в среде Turbo Pascal»
Выполнил: студент факультета
ИВТ-21-13
Зиновьев П.А.
Руководитель:
Ильин Д.В.
Чебоксары 2013
Содержание
Введение
PASCAL
Модули Pascal, используемые в программе
Модуль Crt
Разработка Программы
Постановка задачи
Алгоритм реализации работы
Алгоритм реализации игровой программы
Процедуры и функции программы
Описание пользовательского интерфейса
Заключение
Литература
Приложение 1
Приложение 2
Введение
На современном рынке программного обеспечения довольно много различных программ для выполнения задач самых разных планов. Но кроме подобного «софта» существует такой тип программ как компьютерные игры. Причем эти творения человеческого гения занимают не малую долю рынка развлечений.
Еще в детстве, играя на приставках типа Dendy или Sega, многие, наверное, как и я, поражались фантазии разработчиков и технике исполнения игры. Но с популяризацией компьютеров наступила новая эра в области подобных игр. Качество графического и звукового оформления растет по экспоненте, а игровой процесс усложняется и становится все более интересным с каждым днем. Те, кто уже совсем наигрался, почти наигрался или еще не наигрался, но в процессе общения с компьютером уже начал совмещать игры с чем-нибудь более полезным, возможно, хотели бы придумать какие-нибудь свои, непохожие ни на какие другие игры.
Разработка игры является очень интересным и захватывающим процессом. Ведь данное искусство заключает в себе и совмещает множество других видов искусств. Так как для создания игры нужно: написать сценарий со связным сюжетом (если это не казуальная аркада), придумать совершенно новый и необычный игровой процесс, подобрать или написать соответствующую музыку, нарисовать красивые графические файлы или же придумать совершенно новое графическое оформление и, в конце концов, написать связывающий все это в единое целое алгоритм и запрограммировать его на определенном языке программирования.
В данной курсовой работе речь пойдет о создании несложной игровой программы «Турбозмей», которая и будет являться объектом исследования.
В первой главе данной курсовой работы рассматриваются язык программирования Pascal и его турбооболочка, в пункте 1.1. приводится аналитический обзор игрового программного обеспечения. В пункте 1.2. приводится описание процедур и функций модуля Crt, используемых при реализации практической части курсовой работы.
Во второй главе приведены этапы разработки программы, такие как постановка задачи, алгоритм реализации и описание пользовательского интерфейса.
В заключении приведены выводы по курсовой работе, достоинства и недостатки полученного программного продукта и методов его реализации.
Список использованных источников содержит полный перечень технической литературы, использованной для написания данной курсовой работы.
Приложения содержат блок-схемы всех процедур программы и текст самой программы.
игра pascal программный интерфейс
PASCAL
Целью моей курсовой работы является программирование с помощью Turbo Pascal 7.1. Прежде чем начать выполнять свое задание рассмотрим эту систему программирования, в общем.
Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. И этим именем был назван новый программный продукт с феноменальными характеристиками.
Turbo Pascal - это среда разработки для языка программирования Паскаль. Используемый в Turbo Pascal диалект базировался на более раннем UCSD Pascal, получившем распространение, в первую очередь, на компьютерах серии Apple II <http://ru.wikipedia.org/wiki/
Достоинства
Удобная среда разработки, включающая функциональный отладчик, доступный в любой момент.
Контекстная справочная система, по которой можно изучать язык без обращения к сторонним источникам.
Высокая скорость компиляции, высокая скорость выполнения откомпилированных программ.
Встроенная возможность использовать вставки на языке ассемблера.
Недостатки
Компилятор рассчитан на реальный режим DOS, применение которого сходит на нет. Однако в последних версиях компилятора и среды введена поддержка защищённого режима вместе с соответствующим отладчиком (TD).
В модуле CRT имеется ошибка (некорректный подсчёт количества циклов для функции delay, не рассчитанный на быстрые процессоры, процессоры с переменной частотой и многозадачные среды), из-за которой при запуске программы на компьютерах с тактовой частотой более 200 MHz сразу происходило аварийное завершение с сообщением «Runtime error 200 at…». Существуют разные варианты исправления модуля CRT. В варианте Клауса Хартнегга ошибка 200 не возникает, но длительность Delay на быстрых компьютерах меньше желаемой, и эта проблема по незнанию иногда тоже считается недостатком Turbo Pascal.
Неправильная работа с метками во встроенном ассемблере
Модули Pascal, используемые в программе
Модуль Crt
Модуль Crt позволяет выводить цветные символы на цветном экране. Хотя по-прежнему отображение будет происходить в текстовом режиме. Текстовый режим означает, что на экране могут выводиться только определенные символы в определенных местах (знакоместах). Можно представить экран, разделенным вертикальными и горизонтальными линиями на ячейки. В эти ячейки можно «вписывать» различные символы. У каждой ячейки есть адрес.
Модуль Crt содержит ряд процедур, позволяющих задавать цвет символов и экрана, очищать экран, менять позицию курсора и др.
Стандартный экран в Паскале чаще формируется из 25 строк и 80 столбцов. Строки нумеруются сверху вниз, а столбцы слева на право. Нумерация начинается с единицы (что может показаться непривычным).
Количество доступных цветов (для экрана и символов) всего 16. Они кодируются числами от 0 до 15. Также вместо чисел можно прописывать названия цветов.
Для того чтобы в программе можно было использовать содержимое модуля Crt, его надо импортировать (подключить) в программу. Делается это в секции, которая начинается со слова uses.
Чтобы очистить экран от всех надписей, требуется выполнить процедуру clrscr. Если перед этим был задан цвет экрана (с помощью textbackground), то экран будет залит соответствующим цветом.
Цвет текста определяется процедурой textcolor, позиция курсора - gotoxy.
Процедура TextBackGround(colоr:byte); устанавливает цвет фона, который может принимать значения от 0 - Black (черный) до 7 - LightGray (светло-серый).
Процедура TextColor(colоr:byte); устанавливает цвет выводимого в окне текста. Значение цвета обычно изменяется в диапазоне от 0 - Black (черный) до 15 - White (белый). Для вывода мерцающего текста заданного цвета, необходимо в процедуре к значению цвета прибавить константу Blink или значение 128, например, TextColor(Red+Blink) или TextColor(Magenta+128).
Процедура ClrScr; очищает активное окно текущим цветом фона и устанавливает курсор в правый верхний угол этого окна.
Процедура ClrEol; очищает строку текущим цветом фона от текущей позиции курсора до конца строки.
Процедура GotoXY(x,y:byte); переводит курсор в позицию с координатами x, y.
Процедура DelLine; удаляет строку из активного окна, на которой располагается курсор, и смещает все нижние строки на одну позицию вверх.
Процедура InsLine; вставляет дополнительную строку от места расположения курсора в активном окне.
Функция WhereX:integer; возвращает значение х текущей позиции курсора.
Функция WhereY:intteger; возвращает значение у текущей позиции курсора.
Процедура LowVideo; устанавливает режим минимальной яркости свечения символов на экране.
Процедура NormVideo; устанавливает режим нормальной яркости свечения символов на экране.
Процедура HighVideo; устанавливает режим максимальной яркости свечения символов на экране.
Ввод информации в текстовом режиме выполняется с помощью процедур Read, Readln, а вывод - Write и Writeln. Если при выводе текста в активном окне достигается его нижняя граница, то информация в окне сдвигается на одну строку вверх. Такой процесс часто называют «прокруткой».
Процедура CrtExit; восстанавливает режим, который был установлен стандартно после загрузки операционной системы. Данную процедуру целесообразно выдавать при завершении работы программы, использующей текстовый режим работы.
Функция KeyPressed:boolean; - принимает значение True (истина), если на клавиатуре была нажата какая-нибудь клавиша, в противном случае - False (ложь). Коды клавиш клавиатуры при этом сохраняются в ее специальном буфере и могут использоваться для анализа и обработки.
Функция ReadKey:Char; - читает код клавиши (один байт) из буфера клавиатуры. Этот код на экран компьютера не выводится. Если перед этой функцией выполнялась функция KeyPressed, и она приняла значение True (истина), то код клавиши читается сразу. В противном случае функция ReadKey ожидает нажатия клавиши. Для расширенных кодов клавиш данную функцию требуется выполнять дважды.
Для проверки нажатия клавиши в период выполнения цикла часто применяется функция KeyPressed в сочетании с оператором цикла с последующим условием Repeat …until.
Для работы со звуком в модуле CRT используются две процедуры Sound и NoSound.
Процедура Sound(Sig:word); - обеспечивает доступ к встроенному динамику компьютера и генерирует звуковой сигнал определенного частотного тона в герцах.
Для завершения выдачи динамиком звукового сигнала используется процедура NoSound.
При работе со звуком часто используется процедура задержки выполнения программы на определенное число миллисекунд Delay(Msek:word);.
Пример программы, использующей модуль crt:
program modulcrt;Сrt;
textbackground (11); {устанавливаем цвет фона}
clrscr;
textcolor (4); {устанавливаем цвет изображения}
gotoxy(20,20);
write('Privet, druziya!');
delay(2500); {делаем временную задержку текста}
gotoxy (40,40);
textcolor (6);
write ('WELCOM!');
readln;.
Разработка программы
Постановка задачи
Разработать игровую программу «Турбозмей» в жанре казуальная аркада, которая включает игровое поле, на котором имеется «игрок» - движущийся объект, оставляющий за собой бесконечно удлиняющуюся ломаную - «след». На поле случайным образом появляется «еда» - объект, соприкосновение с которым прибавляет +1 к счетчику количества набранных очков. Каждый подбор «еды» сопровождается ее удалением и созданием новой в другой случайной точке игрового поля. При этом задержка межу передвижением игрока уменьшается (то есть растет скорость), что вызывает рост сложности игрового процесса.
Через каждое четвертое соприкосновение игрока с объектом «еда» игровое поле пересоздается, а предыдущий след от игрока удаляется.
Помимо объекта «еда» в игре присутствует такой объект как «искусственное препятствие». В отличие от «следа» игрока «искусственные препятствия» создаются в случайных точках поля (как и «еда»), но столкновение с ними приводит к тому же, что и столкновение игрока со своим «следом» - проигрыш и вывод количества набранных очков с последующей записью в таблицу рекордов. Цель игры - набрать наибольшее количество очков
Алгоритм реализации работы
Алгоритм реализации игровой программы
Запуск программы осуществляется следующим образом: необходимо открыть папку, содержащую данную игру, и найти исполняемый файл turbosnake.exe. На этом файле следует выполнить двойной щелчок левой клавишей манипулятора мышь.
Проект программы состоит из компилируемого файла проекта - tsnake.pas, содержащего необходимые процедуры и функции для исполнения и генерируемого файла records.txt, в который выгружается вся таблица рекордов.
Файл records.txt является обычным текстовым файлом, что сделано для простоты контроля и наблюдения своих набранных очков, а в самом файле данные хранятся в виде последовательных строк, имеющих нумерацию, имя игрока и количество набранных очков.
После запуска программы на экран выводится консольное окно (рис.1), на котором расположены следующие объекты:
Информационное сообщение, сообщающее о том, что игра приостановлена (Game paused), с кратким, но достаточным описанием управления и основных горячих клавиш
Игровое поле, обозначенное двумя горизонтальными чертами, на котором располагается «игрок», «еда» и, возможно (в зависимости от зерна генератора псевдослучайных чисел) несколько экземпляров объекта «искусственная стена», разбросанных случайным образом по игровому полю
Игра не начинается сразу же после запуска программы, т. е. работа программы начинается сразу после запуска, а игра устанавливается в положение паузы(См. приложение). (процедура Pausing)
Все игровое поле представляет собой двумерный массив размером 78 на 20 и пространство, занимаемое символами на экране, в частности, «след» от игрока и «искусственные препятствия», хранится в массиве в виде единиц, где индексный адрес элемента массива является координатами занимаемого пространства. В то же время игровое поле - это экран со строками из различных символов различных цветов, которые изменяются при том или ином действии.
Расстановка «искусственных препятствий», «еды» и «игрока» происходит произвольным образом, в зависимости от зерна генератора псевдослучайных чисел и размера игрового поля.
Координаты «игрока» выбираются случайно (переменная X и переменная Y) лишь с условием того, чтобы он был расположен как можно ближе к центру игрового поля, а исходное направление при этом выбирается в 0 градусов (переменная d). В то же время координаты игрока помечаются цифрой «1» в матрице.
Образцы объекта «еда» расставляются примерно таким же образом, как и «игрок», но здесь имеется дополнительная проверка на то, чтобы «еда» не выходила за границы игрового поля.
«Искусственные препятствия» создаются по схожему алгоритму с «едой» (с проверкой на выход за границы игрового поля), с той лишь разницей, что их количество варьируется от 1 до 300 и зависит от уровня сложности. После нескольких тестов было решено кроме проверки на принадлежность игровому полю ввести проверку на расстояние между игроком и вновь создаваемым «искусственным препятствием», чтобы исключить случаи мгновенного проигрыша при обновлении игрового поля.