Создание игры в среде Turbo Pascal

Язык программирования Pascal и его турбооболочка. Аналитический обзор игрового программного обеспечения. Функции модуля Crt. Постановка задачи создания несложной игровой программы "Турбозмей", алгоритм реализации и описание пользовательского интерфейса.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 15.05.2014
Размер файла 100,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

51

Размещено на http://www.allbest.ru

ФГБОУ ВПО

Чувашский государственный университет им. И. Н. Ульянова

Кафедра информатики и вычислительной техники

Факультет информатики и вычислительной техники

Курсовая работа

по информатике

Тема: «Создание игры в среде 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

Достоинства

Удобная среда разработки, включающая функциональный отладчик, доступный в любой момент.

Контекстная справочная система, по которой можно изучать язык без обращения к сторонним источникам.

Высокая скорость компиляции, высокая скорость выполнения откомпилированных программ.

Встроенная возможность использовать вставки на языке ассемблера.

Недостатки

Компилятор рассчитан на реальный режим 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;

uses Сrt;

begin

textbackground (11); {устанавливаем цвет фона}

clrscr;

textcolor (4); {устанавливаем цвет изображения}

gotoxy(20,20);

write('Privet, druziya!');

  delay(2500); {делаем временную задержку текста}

  gotoxy (40,40);

textcolor (6);

write ('WELCOM!');

readln;

end.

Разработка программы

Постановка задачи

Разработать игровую программу «Турбозмей» в жанре казуальная аркада, которая включает игровое поле, на котором имеется «игрок» - движущийся объект, оставляющий за собой бесконечно удлиняющуюся ломаную - «след». На поле случайным образом появляется «еда» - объект, соприкосновение с которым прибавляет +1 к счетчику количества набранных очков. Каждый подбор «еды» сопровождается ее удалением и созданием новой в другой случайной точке игрового поля. При этом задержка межу передвижением игрока уменьшается (то есть растет скорость), что вызывает рост сложности игрового процесса.

Через каждое четвертое соприкосновение игрока с объектом «еда» игровое поле пересоздается, а предыдущий след от игрока удаляется.

Помимо объекта «еда» в игре присутствует такой объект как «искусственное препятствие». В отличие от «следа» игрока «искусственные препятствия» создаются в случайных точках поля (как и «еда»), но столкновение с ними приводит к тому же, что и столкновение игрока со своим «следом» - проигрыш и вывод количества набранных очков с последующей записью в таблицу рекордов. Цель игры - набрать наибольшее количество очков

Алгоритм реализации работы

Алгоритм реализации игровой программы

Запуск программы осуществляется следующим образом: необходимо открыть папку, содержащую данную игру, и найти исполняемый файл turbosnake.exe. На этом файле следует выполнить двойной щелчок левой клавишей манипулятора мышь.

Проект программы состоит из компилируемого файла проекта - tsnake.pas, содержащего необходимые процедуры и функции для исполнения и генерируемого файла records.txt, в который выгружается вся таблица рекордов.

Файл records.txt является обычным текстовым файлом, что сделано для простоты контроля и наблюдения своих набранных очков, а в самом файле данные хранятся в виде последовательных строк, имеющих нумерацию, имя игрока и количество набранных очков.

После запуска программы на экран выводится консольное окно (рис.1), на котором расположены следующие объекты:

Информационное сообщение, сообщающее о том, что игра приостановлена (Game paused), с кратким, но достаточным описанием управления и основных горячих клавиш

Игровое поле, обозначенное двумя горизонтальными чертами, на котором располагается «игрок», «еда» и, возможно (в зависимости от зерна генератора псевдослучайных чисел) несколько экземпляров объекта «искусственная стена», разбросанных случайным образом по игровому полю

Размещено на http://www.allbest.ru

51

Размещено на http://www.allbest.ru

Игра не начинается сразу же после запуска программы, т. е. работа программы начинается сразу после запуска, а игра устанавливается в положение паузы(См. приложение). (процедура Pausing)

Все игровое поле представляет собой двумерный массив размером 78 на 20 и пространство, занимаемое символами на экране, в частности, «след» от игрока и «искусственные препятствия», хранится в массиве в виде единиц, где индексный адрес элемента массива является координатами занимаемого пространства. В то же время игровое поле - это экран со строками из различных символов различных цветов, которые изменяются при том или ином действии.

Расстановка «искусственных препятствий», «еды» и «игрока» происходит произвольным образом, в зависимости от зерна генератора псевдослучайных чисел и размера игрового поля.

Координаты «игрока» выбираются случайно (переменная X и переменная Y) лишь с условием того, чтобы он был расположен как можно ближе к центру игрового поля, а исходное направление при этом выбирается в 0 градусов (переменная d). В то же время координаты игрока помечаются цифрой «1» в матрице.

Образцы объекта «еда» расставляются примерно таким же образом, как и «игрок», но здесь имеется дополнительная проверка на то, чтобы «еда» не выходила за границы игрового поля.

«Искусственные препятствия» создаются по схожему алгоритму с «едой» (с проверкой на выход за границы игрового поля), с той лишь разницей, что их количество варьируется от 1 до 300 и зависит от уровня сложности. После нескольких тестов было решено кроме проверки на принадлежность игровому полю ввести проверку на расстояние между игроком и вновь создаваемым «искусственным препятствием», чтобы исключить случаи мгновенного проигрыша при обновлении игрового поля.

Первоначально на экран выводится сообщение «Game paused», это означает что игроку следует снять игру с паузы (клавиша P) перед началом игры.

Каждый четвертый подобранный объект «еда» вызывает очистку игрового поля и создание новых «искусственных препятствий» в случайных точках игрового поля.

Размещено на http://www.allbest.ru

51

Размещено на http://www.allbest.ru

С течением времени «игрок» визуально растет и занимает все большее место на игровом поле, тем самым усложняя доступ к «еде» (рис.2)

Размещено на http://www.allbest.ru

51

Размещено на http://www.allbest.ru

При столкновении игрока с «искусственным препятствием» или со своим «следом» текущий сеанс игры завершается с сообщением «You loosed with score: количество_набранных_очков» Далее выводится точность игрока, запрос имени текущего игрока и предыдущий наилучший результат с именем игрока из таблицы рекордов. (Рис.3)

Процедуры и функции программы

Функция Str2Dec

Используется для перевода целого числа из строкового представления (string) в числовое представление (real), для удобства последующей обработки. А именно при сравнении результатов из текстового файла таблицы рекордов.

Процедура SortW

Перебирает элементы массива со значениями результатов игроков и сортирует в массиве (методом перестановок) данные результаты в порядке убывания, при этом для сравнения количества набранных очков используется функция Str2Dec. После сортировки результатов записывает их в файл records.txt в формате «место.имя_игрока: результат»

Процедура FindWord

Посимвольно считывает информацию из файла таблицы рекордов records.txt. Это происходит следующим образом: символы считанные до знака точки отбрасываются, далее каждый символ записывается в строковую переменную до достижения знака двоеточия и результат сохраняется в массиве строк (имя игрока) под определенным номером (индексом). После достижения знака двоеточия происходит чтение количества набранных очков до знака перевода строки. Считанное количество очков записывается в другой массив строк, но с тем же индексом, что и имя игрока. В конце работы процедуры в переменную nrec заносится текущее количество результатов, которое требуется при следующей обработке таблицы.

Процедура Rec

Цель работы процедуры - проверка наличия файла с таблицей рекордов records.txt. Далее в зависимости от наличия или отсутствия происходит следующая последовательность действий: если файла нет, то создается новый файл records.txt в той же директории, где находится сам запускаемый файл игры. Если файл с таблицей существует, то начинается его обработка процедурами FindWord и SortW. Таким образом к началу игры программа уже будет иметь данные о предыдущих результатах игрока.

Процедура Clear

Задача процедуры - очистка экрана и игрового поля. Причем очистка происходит не только в том плане, что удаляются все символы с экрана (ClrScr), но и очищается (путем обнуления всех элементов) массив игрового поля, в котором хранится информация о «занятости» определенной позиции экрана произвольным символом. Кроме того данная процедура рисует верхнюю и нижнюю границы игрового поля, путем цикличного печатания символа нижнего подчеркивания до границ экрана.

Процедура Labgen

Генерирует «искусственны препятствия» на игровом поле. Алгоритм данной процедуры следующий:

Вызов процедуры перегенерации зерна псевдослучайных чисел.

Определение количества вновь создаваемых препятствий по формуле случайное число от (0 до 7) + сотая часть коэффициента сложности, который определяется текущим количеством набранных очков.

Определение координат создаваемого препятствия случайным образом пока элемент массива игрового поля с индексами вновь подобранных соответствующих координат не будет равен 0 и проверка расстояния между игроком и создаваемым препятствием.

Заполнение элемента массива игрового поля с индексами координаты созданного препятствия единицей, и рисование препятствия на игровом поле как символ #.

Процедура Mor

Заключает в себе всю систему передвижения игрока по игровому полю с проверками на столкновения с препятствиями всех видов и перемещением игрока в противоположный конец игрового поля при пересечении границ. При столкновении игрока с препятствием происходит очистка экрана функцией Clear и в центре экрана печатается с сообщением о проигрыше (со звуковым сопровождением, если оно включено) и результатом и пересортировка таблицы рекордов. В противном случае игра продолжается и определяется следующая координата игрока в зависимости от направления, единицами заполняется массив игрового поля и печатается символ «о» в определяемом положении игрока.

Процедура Scoring

Проверяет положение «игрока» относительно «еды» и если расстояние между ними меньше 1, то удаляет существующую «еду» и прибавляет +1 к счетчику очков (score), +100 к счетчику коэффициента сложности (h) и +1 к счетчику обновления игрового поля (rs). Причем все это сопровождается соответствующим звуком.

Процедура Fset

При отсутствии объекта «еда» на игровом поле создает его в случайной точке игрового поля, проверяя координаты относительно границ поля и сверяясь с матрицей игрового поля, создает «еду» в свободной точке. Причем не исключается возможность создания «еды» в непосредственной близости к игроку или в замкнутом и недоступном игроку месте. Последнее создает дополнительное «правило» игры, которое приучает игрока не создавать замкнутых пространств.

Процедура Pausing

Проверяет состояние переменной pause, которая определяется нажатием клавиши P и в зависимости от состояния снимает или ставит игру на паузу, в то же время выводит в нижнюю часть экрана информацию по управлению и по основным горячим клавишам. Пауза реализована в виде бесконечного цикла, условием выхода из которого является нажатие на клавишу P.

Более подробно смотрите исходный текст программы Приложение 1.

Описание пользовательского интерфейса

P - поставить игру на паузу или возобновить ее, вывести в низ экрана информацию по горячим клавишам программы.

Q - мгновенный выход из игры, без сохранения результатов.

W, A, S, D - управление направлением игрока, вверх, влево, вниз, вправо соответственно.

M - включить или выключить звуковое сопровождение (включено по умолчанию)

Заключение

В результате выполнения данной курсовой работы был получен игровой программный продукт, названный «Турбозмей». Было проведено исследование компонентов программной среды Turbo Pascal 7.1, которые использовались при создании игры.

В результате исследования были выявлены следующие недостатки полученного программного продукта:

Отсутствие полноценной графики

Высокая сложность игрового процесса для рядового пользователя

Работоспособность приложения только в среде Windows

Фиксированный размер экрана

Однако, помимо недостатков, есть и достоинства у этого программного продукта:

Небольшой размер исполняемого файла за счет отсутствия графики

Совершенно новый игровой процесс, хоть и основан на классической версии «змейки»

Возрастающая сложность игры

Автоматизированная таблица рекордов

Программный продукт малотребователен к системным ресурсам компьютера. Минимальная конфигурация: процессор - не ниже Pentium, оперативная память - не ниже 16 Mb, операционная система - Windows 95 / 98/ Me / NT / 2000 / XP

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

Литература

Эхерн, Люк Создание компьютерных игр М.: ДМК Пресс - Москва, 2001. - 304 c.

Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие.

М.:Нолидж, 1997. -616с.

 Павловская, Т.А. Паскаль. Программирование на языке высокого уровня; СПб: Питер - Москва, 2003. - 393 

Приложение 1

Исходный текст

Program tsnake;

uses crt;

const

Xs=78;

Ys=20;

Dig:set of char = ['0'..'9'];

Let:set of char = ['A'..'Z'];

var

X0,Y0,X,Y,X2,Y2,n,i,k,d,f,h,score,nrec,rs:integer;

xy:array [0..Xs+2, 0..Ys+2] of integer;

recs:text;

c:char;

t:real;

rest,quit,pause,snd:byte;

zn,id:array[0..100] of string;

function Str2Dec(s:string): real;

var

val,k:real;

i,ch:longint;

begin

Str2Dec:=0;ch:=0;

s:='*'+s;

i:=length(s);k:=1;val:=0;

while (s[i]<>'*') and (s[i] in ['0'..'9']) do

begin

ch:=ord(s[i])-ord('0');

val:=(ch*k+val);

k:=k*10;

i:=i-1;

end;

Str2Dec:=val;

end;

procedure SortW;

var tstr:string[10];

i,n:integer;

begin

for i:=2 to nrec do

if Str2Dec(zn[i])>=Str2Dec(zn[i-1]) then begin

tstr:=zn[i-1];zn[i-1]:=zn[i];zn[i]:=tstr;

tstr:=id[i-1];id[i-1]:=id[i];id[i]:=tstr;

end;

rewrite(recs);

for i:=1 to nrec do begin

writeln(recs,i,'.',id[i],': ',Str2Dec(zn[i]):3:0);

end;

close(recs);

end;

procedure FindWord;

var

tstr:string[10];

ch:char;

ex:byte;

begin

i:=1;

while not Eof(recs) do begin

while not Eoln(recs) do begin

ch:='0';ex:=0;

id[i]:='';zn[i]:='';

while (ch in Dig+Let) or (ch='.') or (ch=' ')do begin

read(recs,ch);

ch:=upcase(ch);

if (ch in Dig+Let) or (ch='.') or (ch=' ') then id[i]:=id[i]+ch;

Delete(id[i],1,Pos('.',id[i]));

end;

if (ch=' ') then read(recs,ch);

if ch=':' then begin

while not(Eoln(recs)) do begin

read(recs,ch);

zn[i]:=zn[i]+ch;

end;

i:=i+1;

end;

end;

readln(recs);

end;

nrec:=i-1;

end;

procedure Rec;{score record}

begin

assign(recs,'records.txt');

{$I-}

reset(recs);{}

{$I+}

if (IOresult <> 0) then begin

rewrite(recs);

writeln(recs,'1.SZ: 80');

writeln(recs,'1.SZ: 80');

close(recs);

end

else

Findword;

SortW;

end;

procedure Clear;

begin

ClrScr;

for n:=0 to Xs do begin

gotoXY(n+1,Ys+1);textcolor(3);write('_');

gotoXY(n+1,1);write('_');

for i:=0 to Ys do

xy[n,i]:=0;

end;

end;

procedure Labgen;

var

N:0..100;

I,wx,wy:integer;

begin

randomize; N:=random(7)+h div 100;

for I:=1 to N do begin

repeat

wx:=random(Xs-8)+2;

wy:=random(Ys-5)+2;

until (xy[wx,wy]=0) and (sqrt((X-wx)*(X-wx)+(Y-wy)*(Y-wy))>=3);

xy[wx,wy]:=1;

gotoXY(wx,wy);

textcolor(3);

write('#');

end;

end;

procedure Mor;{move or restart}

begin

if xy[X,Y]=1

then begin

rest:=1;

if snd=1 then begin

sound(700);

delay(40000);

sound(400);

delay(30000);

sound(380);

delay(30000);

nosound;

end;

Clear;

GotoXY((Xs div 2)-10,Ys div 2);

textcolor(3);

writeln(' You loosed with score: ',score:3);

GotoXY(Xs div 2-9,(Ys div 2)+2);

writeln(' Accuracy: ',score/t*0.1:4:3,' ');

GotoXY(Xs div 2-9,(Ys div 2)+5);

write(' Highscore: ',zn[1],' - ',id[1]);

nrec:=nrec+1;

str(round(score+score/t*0.1),zn[nrec]);

GotoXY(Xs div 2-7,(Ys div 2)+4);write('Name: ');

readln(id[nrec]);

SortW;

end;

xy[X,Y]:=1;{array filling}

case d of

0: Y:=Y-1;

1: X:=X+1;

2: Y:=Y+1;

3: X:=X-1;

end;

X0:=X;Y0:=Y;

if X>Xs then X:=1;

if X<1 then X:=Xs;

if Y>Ys then Y:=2;

if Y<2 then Y:=Ys;

GotoXY(X,Y); TextColor(2);

writeln('o');{Snake drawing}

end;

procedure Scoring;

begin

{Eating and Scoring}

if sqrt((X-X2)*(X-X2)+(Y-Y2)*(Y-Y2))<=1 then begin

GotoXY(X2,Y2); writeln(' ');

GotoXY(X2-1,Y2);writeln(' ');

GotoXY(X2,Y2-1);writeln(' ');

GotoXY(X2,Y2+1);writeln(' ');

xy[X0,Y0]:=0;

textcolor(7);

GotoXY(X0,Y0);writeln('o');

f:=0; score:=score+1;h:=h+100; rs:=rs+1;

if snd=1 then begin

sound(600);

delay(10000);

sound(900);

delay(10000);

nosound;

end;

end;

end;

procedure Fset;

begin

{Food setting}

if f=0 then begin

repeat

X2:=random(Xs-8)+2;

Y2:=random(Ys-8)+4;

until xy[X2,Y2]=0;

GotoXY(X2,Y2); TextColor(7); writeln('xx'); f:=1;

GotoXY(X2-1,Y2);writeln('x');

GotoXY(X2,Y2-1);writeln('x');

GotoXY(X2,Y2+1);writeln('x');

end; {Food draw}

end;

procedure Pausing;

begin

{Pause}

if pause=1 then

repeat

textcolor(7);

GotoXY(Xs div 2,Ys+3);

writeln('Game Paused');

GotoXY(1,Ys+4);

writeln(' Help: P - start/pause; Q - quit; W,A,S,D - moving;M - mute;');

c:=readkey;c:=upcase(c);

if c='Q' then pause:=0;

if c='M' then if snd=0 then snd:=1 else snd:=0;

{UnPause}

if c='P' then begin

pause:=0;

gotoXY(1,Ys+3); ClrEol;

gotoXY(1,Ys+4); ClrEol;

gotoXY(Xs div 2,Ys+3); write('Score: ',score:3);

end;

until (pause=0);

end;

begin

Rec;{record read}

quit:=0;

snd:=1;

while quit=0 do begin

randomize;t:=0;rest:=0;

Clear;

X:=30+random(10);

Y:=5+random(10);

d:=1; f:=0; {Direction=1 and no food}

score:=0;

h:=0;

Labgen;

rs:=1; {restart screen}

pause:=1;

repeat {until restart}

repeat {until keypress}

randomize;

gotoXY(Xs div 2,Ys+3); write('Score: ',score:3);

t:=t+0.001;

if rs >= 5 then begin

Clear;

rs:=1;

Labgen;

end;

Mor;

Fset;

Scoring;

Pausing;

if h<30000 then delay(30000-h); {Speed of game}

until (keypressed) or (rest=1);

c:=readkey; c:=upcase(c);

case c of

'W': if d<>2 then d:=0;

'D': if d<>3 then d:=1;

'S': if d<>0 then d:=2;

'A': if d<>1 then d:=3;

'P': pause:=1;

'Q': quit:=1;

'M': if snd=0 then snd:=1 else snd:=0;

end;

until (rest=1) or (quit=1);

for n:=1 to nrec do

Rec;{Recordsfix}

end;{Quit from game}

end.

Приложение 2

Блок схема

Размещено на Allbest.ru


Подобные документы

  • Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.

    курсовая работа [275,8 K], добавлен 28.06.2008

  • Изучение требований и реализации пользовательского интерфейса в среде Turbo Pascal. Разработка текстового, графического режимов работы дисплеев. Рассмотрение численных методов решения трансцендентных уравнений, их алгоритмизации и программирования.

    шпаргалка [776,8 K], добавлен 07.05.2010

  • Разработка алгоритма поставленной задачи по обработке числовой информации в среде Turbo Pascal 7.0 с базовым языком программирования Pascal, отладка программы, реализующей разработанный алгоритм. Описание структуры программы, ее вспомогательных процедур.

    курсовая работа [668,0 K], добавлен 25.02.2010

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.

    курсовая работа [519,3 K], добавлен 25.06.2011

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.