Реферат: Разработка игровой программы на языке программирования Turbo Pascal
МАГНИТОГОРСКИЙГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
КАФЕДРА ИНФОРМАТИКИ
<img src="/cache/referats/16562/image001.gif" " " v:shapes="_x0000_s1093">
Курсовая работа поинформатике
Выполнили: студентка 2 курса
Гойтина Ю.В.
Руководитель: ст. преподаватель
Гусева Е. Н.<img src="/cache/referats/16562/image002.gif" " v:shapes="_x0000_s1095">
СОДЕРЖАНИЕ
ВВЕДЕНИЕ……………………………………………………………3
1.<span Times New Roman"">
ИГРЫ «SIEGE»………..……………….……………………………… 5
2.<span Times New Roman"">
«SIEGE»……….……………………………………………………… 9
3.<span Times New Roman"">
3.1 Описание назначения модулей……..……………………...11
ЗАКЛЮЧЕНИЕ…………………..…………………………………. 13
СПИСОК ЛИТЕРАТУРЫ…………………………………………. 14
ПРИЛОЖЕНИЕ……………………………………………………… 15
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»; font-style:normal">ВВЕДЕНИЕ
<span Times New Roman",«serif»; font-style:normal">Большинство пользователей, как опытных, так и начинающих, небез удовольствия играют в компьютерные игры. Компьютерные игры сравнительномолодое явление, обладающие достаточно богатой со своими падениями и взлетами.Их история началась не с конца 1970 годов. Начало лежит гораздо раньше. Насамом деле все начиналось с модели железной дороги, на основе которой появились предпосылки для дальнейшегоразвития первых компьютерных игр.
<span Times New Roman",«serif»; font-style:normal">Игры дают нам шанс расслабиться играя, сбросить стресс. Чтоони делают лучше всего, так это создают альтернативные реальности, в которыеможно погрузиться. Иногда эти реальности пытаются повторить наш реальный мир. Ииногда они могут перенести нас в полностью враждебный или фантастический мир.От управления реактивным истребителем до управления командой НациональнойФутбольной лиги, от сражения с драконами до создания новых миров, постройкидорог, исследование космоса, до всего, что может изобрести наше воображение.
<span Times New Roman",«serif»; font-style:normal">Указать точное число компьютерных игр очень трудно. Можнотолько примерно оценить число различных наименований игр, находящихся на рынкев любое время.
<span Times New Roman",«serif»; font-style:normal">Компьютерная игра – один из наиболее популярных видовпрограммного обеспечения, давший начало целому направлению – игровойинформатике. Несмотря на многообразие подобных программ, все игры могут бытьразделены на следующие виды:
<span Times New Roman",«serif»; font-style:normal">1.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Обучающие<span Times New Roman",«serif»; font-style:normal">2.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Развивающие<span Times New Roman",«serif»; font-style:normal">3.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Деловые<span Times New Roman",«serif»; font-style:normal">4.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Развлекательные<span Times New Roman",«serif»; font-style:normal">5.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Комбинированные<span Times New Roman",«serif»;font-style:normal">Целью нашей курсовой работыявляется изучение основных положений теории игр, а также разработка игровойпрограммы на языке программированияTurbo Pascal.
<span Times New Roman",«serif»; font-style:normal">Проектирование игрового продукта состоит из несколькихэтапов:
<span Times New Roman",«serif»; font-style:normal">1.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Определениякласса игры. На данном этапе необходимо сформулировать правила игры.<span Times New Roman",«serif»; font-style:normal">2.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Выделениекомпонентов игры.<span Times New Roman",«serif»; font-style:normal">3.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Определениеиерархического уровня игры:<span Times New Roman",«serif»;font-style:normal">А) оперативный
<span Times New Roman",«serif»;font-style:normal">Б) тактический
<span Times New Roman",«serif»;font-style:normal">В) стратегический
<span Times New Roman",«serif»; font-style:normal">4.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Разработкадизайна игры.<span Times New Roman",«serif»; font-style:normal">5.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal"> Разработка интерфейса игры.<span Times New Roman",«serif»; font-style:normal">Чтобы достигнуть поставленной цели необходимо решить задачи,связанные психологической областью(использование палитры, образы на экране) и областями теории игр, а такжезадачи, связанные с областью программирования (изучение графическихвозможностей Turbo Pascal).
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
1.РАЗРАБОТКА ИГРОВОЙ ПРОГРАММЫ НАПРИМЕРЕ ИГРЫ «SIEGE»
Для того чтобы разработать игровуюпрограмму необходимо определить цели и задачи, которые будут сопровождать нас впроцессе ее создания.
<span Times New Roman",«serif»;font-style:normal"> Создание компьютерной игры – это не только работа программистов, но и творческих деятелей, так как приразработке игровой программы необходимо уделять большое внимание дизайну игры.Будут ли играть в игру, во многом зависит от ее дизайна. Поэтому желательноиспользовать все свое воображение и фантазию.
Вообще, под и г р о й понимается такой вид деятельности, который характеризуетсявзаимодействием игроков, действия которых ограничены правилами и направлены надостижение цели.
Под иг р о к о м понимается человек илигруппа людей. Особенностью компьютерных игр является то, что в качестве одногоиз игроков выступает компьютер.
В каждой игре обязательно существуют свои определенные правила.
П р а в и л о – предписание, устанавливающеепорядок действий играющих.
Внашей игре также существуют свои правила – используя клавиши управлениякурсором играющий может последовательно передвигать героя на протяжении всейстены. Он должен сбрасывать камни на своих врагов, находясь именно над темиврагами, на которые нужно сбросить камень.Чтобы перейти на слудующий уровеньему нужно уничтожить определенное количество врагов. При этом ни один из враговне должен добраться до верха стены, в противном случае игра будет закончена.
В теории игр существуют 2широких класса компьютерных игр:
1.<span Times New Roman"">
игры с преобладанием роли;2.<span Times New Roman"">
игры с преобладанием правил;Игры с преобладанием ролиможно разделить на следующие подклассы:
ü<span Times New Roman"">
сюжетно-ролевые;ü<span Times New Roman"">
деловые;ü<span Times New Roman"">
организационно-деятельностные;ü<span Times New Roman"">
имитационные;Игры с преобладанием правилможно разделить на:
ü<span Times New Roman"">
дидактические;ü<span Times New Roman"">
развивающие;ü<span Times New Roman"">
спортивные;ü<span Times New Roman"">
военные;ü<span Times New Roman"">
азартные;Игра «Siege» относится к играм, в которыхпреобладают правила. В данной игре не предусматривается то, что играющий можетизменять и вводить свои правила на всем ее протяжении. Во время игры играющемунеобходимо принимать решения: в какомнаправлении нужно двигать героя вдоль стены и останавливать его в определенномместе для сбрасывания камней.
<span Times New Roman",«serif»;font-style:normal">Можно выделить следующиесоставляющие при разработке компьютерной игры:
ü<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">цельü<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">игровуюсредуü<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal"> взаимодействие с играющимü<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal"> оценку игровой ситуации<span Times New Roman",«serif»;font-style:normal"> Целью является прохождение всех уровней игры, а средством – выбор правильныхдействий для достижения нужногорезультата.
<span Times New Roman",«serif»;font-style:normal"> В нашей игре под этим подразумевается принятие правильного хода игроком в быстро меняющейся ситуации.
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">И г р о в а я с р е д а – совокупность связей объектов вигре и правил их изменения.
<span Times New Roman",«serif»;font-style:normal"> В игре «Siege» в качестве игровой среды выступает стена с героем иврагами. Во время игры герой уничтожает врагов, сбрасывая на них камни. Когдагерой уничтожает врагов, он попадает на уровень выше. Если герой не успеетсбросить камень на какого — либо врагалибо пройдет все уровни, игразаканчивается. По мере прохождениякаждого уровня игры увеличивается скорость и количество врагов.
<span Times New Roman",«serif»;font-style:normal">В з а и м о д е й с т в и е с иг р а ю щ и м – совокупность средств,предоставляемых для изменения игровой среды.
<span Times New Roman",«serif»;font-style:normal"> В нашей игре при помощи клавиш управлениякурсором можно изменить напрвление движения героя, движущегося вдоль стены. Должнаучитываться быстрота реакции на быстродвижущихся и появляющихся в разных местах врагов.
<span Times New Roman",«serif»;font-style:normal"> О ц е н к а и г р о в о й с и т у а ц ии — соотношения и условия, которыеопределяют цель поведения играющего.
<span Times New Roman",«serif»;font-style:normal">В игре «Siege» начальное положениегероя – середина верхней части стены. Задачей игрока является то, что он,должен уничтожить всех врагов. Находясь в разных положениях, он должен передвигаться именно в то место, где находится враг исбрасывать на него камень.
<span Times New Roman",«serif»;font-style:normal"> Этап создания компьютерной программыначинается только после выбора сюжета, способов взаимодействия сиграющим и системы критериев оценки поведения играющего, описания игровойсреды. Игровая программа состоит из двух частей: первая реализует внутреннюю,логическую структуру компьютерной игры, т. е. отображает игру в системемашинных данных и алгоритмов, вторая — отображает процесс игры на терминале.
Основную роль любой компьютерной игрысоставляет логическая структура, в которой выделяют три уровня – оперативный,тактический и стратегический.
Под о п е р а т и в н ы м у р о вн е м понимают совокупность действийвнутри программы между двумя последовательными действиями играющего.Результатом действия оперативного уровня является отображение всех перемещенийи изменений на экране дисплея.
Т а к т и ч е с к и й у р о в е н ь определяется как совокупность игровыхдействий, ведущих к достижению какой-либо локальной цели. В результатедействия тактического плана играющийдостигает улучшения (или ухудшения) положения в игре.
<span Times New Roman",«serif»; font-style:normal"> С т р а т е г и че с к и й у р о в е н ь предполагает планирование всей игры,которая должна строиться так, чтобыдостичь цели и добиться выигрыша.
В игре «Siege» можно выделить все триуровня, но преобладает тактический, так как от играющего требуется приниматьрешения, куда переместить героя в быстроменяющейся ситуации.
Так же при разработке компьютерных игр,должно уделяться большое внимание на проектирование интерфейса между человекоми компьютером.
Среди множества вариантов интерфейсачеловек-компьютер есть два принципиально отличных вида:
1.<span Times New Roman"">
«вспоминай-и-набирай» — это язык команд, которыесначала надо вспомнить, потом набрать и выполнить;2.<span Times New Roman"">
«смотри-и-выбирай» — это язык всевозможных меню ипиктограмм, в котором следует выбрать необходимое, после чего произойдетсоответствующее действие.Мы в нашей курсовой работе использоваливторой вид интерфейса человек-компьютер для разработки меню игры.
В игре«Siege» мы использовали стандартныесредства для работы с графическими изображениями языка программирования ТурбоПаскаль. Диалог между компьютером и играющим осуществляется как в меню, так и во время самой игры.
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">2. СПЕЦИФИКАЦИЯ ИГРОВОЙ ПРОГРАММЫ«SIEGE»
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">1.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Названиезадачи<span Times New Roman",«serif»;font-style:normal">Компьютерная игра.
<span Times New Roman",«serif»;font-style:normal">Название программы – «Siege».
<span Times New Roman",«serif»;font-style:normal">Система программирования TurboPascal.
<span Times New Roman",«serif»; font-style:normal">2.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Описание<span Times New Roman",«serif»;font-style:normal">Игра начинается с заставки, гденаписано название игры. Затем следует главное меню, где пользователь можетвыбрать один из трех пунктов меню: «Play the game», «Instruction», «Story»,«Exit to DOS». Если пользователь выбирает первый пункт меню, то послепредисловия он может начать игру. Еслион выбирает – второй, то можно ознакомиться с инструкцией. Если он выберет третий пункт, то он можетпрочитать предысторию. Иначе пользователь может выйти из игры. Игрок должен успеть сбрасывать камни на своихврагов, пока они не добрались до верха стены. При неудачном окончании игры,если враг достиг героя, игра заканчивается и выдается сообщение — «Game Over».При выигрыше, если пользователь прошел десять уровней, то он может выйти изигры.
<span Times New Roman",«serif»; font-style:normal">3. Управление режимами работы программы
<span Times New Roman",«serif»; font-style:normal">Игра осуществляется с помощью меню.
<span Times New Roman",«serif»; font-style:normal">4. Входные данные
<span Times New Roman",«serif»; font-style:normal">Входными данными являются действия играющего во время игры,то есть информация о нажатии клавиш управления курсором для управления героем идля выбора пункта меню, клавиши Esc для выхода из игры, клавиши Enter длявыбора пункта меню, клавиши Space длясброса камней.
<span Times New Roman",«serif»; font-style:normal">5. Выходные данные
<span Times New Roman",«serif»; font-style:normal">Сообщение о победе после каждого пройденного уровня «Levelcomplete», о проигрыше «Game over», либосообщения, сопровождающие успешные или неуспешные действия игрока «Looser» — неудача, «2 hit combo» — при уничтожение сразу двух врагов, «Ough! 4 mans atonce» — при уничтожении сразу четырех врагов, «Aaaaaaaaamazing!!!» -приуничтожении более четырех врагов.
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">Выходными данными, связанными с графикой, являются изменениеположения человечка и врагов на экране монитора, а так же количество набранныхочков игроком в этой игре, номер уровня.
<span Times New Roman",«serif»; font-style:normal"> 6.Ошибки
<span Times New Roman",«serif»; font-style:normal">При инициализации программы предусмотрена выдача сообщенийпри отсутствии VGA совместимоговидеоадаптера, ошибки инициализации графического режима.
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»; font-style:normal">3. СТРУКТУРНАЯ ДИАГРАММА
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<div v:shape="_x0000_s1058"> Siege
<span Times New Roman",«serif»"><img src="/cache/referats/16562/image003.gif" v:shapes="_x0000_s1092"><img src="/cache/referats/16562/image004.gif" v:shapes="_x0000_s1060"><img src="/cache/referats/16562/image005.gif" v:shapes="_x0000_s1091"><img src="/cache/referats/16562/image006.gif" v:shapes="_x0000_s1083"><img src="/cache/referats/16562/image007.gif" v:shapes="_x0000_s1086"><img src="/cache/referats/16562/image008.gif" v:shapes="_x0000_s1078"><img src="/cache/referats/16562/image004.gif" v:shapes="_x0000_s1079"><img src="/cache/referats/16562/image005.gif" v:shapes="_x0000_s1057"><img src="/cache/referats/16562/image009.gif" v:shapes="_x0000_s1053"><span Times New Roman",«serif»">
SiegeLogo
VGASpr
VGA13H
Buttons
<div v:shape="_x0000_s1052"> LogoScreen <img src="/cache/referats/16562/image010.gif" v:shapes="_x0000_s1049 _x0000_s1050 _x0000_s1059 _x0000_s1062 _x0000_s1067 _x0000_s1080 _x0000_s1081 _x0000_s1082 _x0000_s1087 _x0000_s1089"> <div v:shape="_x0000_s1068">Refrace
<div v:shape="_x0000_s1051">SiegeSpr
<span Times New Roman",«serif»"><span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»; font-style:normal">3.1 Описание назначения модулей.
<span Times New Roman",«serif»; font-style:normal">S i e g e – основная программа, вызывающая на выполнениепрограммные модули.
<span Times New Roman",«serif»; font-style:normal">Модуль S i e g e S p r - модуль, содержащий игровые объекты (картинки).
<span Times New Roman",«serif»; font-style:normal">Модуль V G A S p r – модуль для рисования спрайтов.
<span Times New Roman",«serif»; font-style:normal">Модуль L o g o s c r e e n –заставка курсовой работы.
<span Times New Roman",«serif»; font-style:normal">Модуль S i e g e L o g o – модуль, содержащий меню,инструкцию, предысторию.
<span Times New Roman",«serif»; font-style:normal">Модуль B u t t o n s – модуль, позволяющий осуществлять нажатие и отпускание клавиши,информацию о состоянии клавиш в реальном времени и об отпущенных клавишах.
<span Times New Roman",«serif»; font-style:normal">Модуль R e t r a c e – модуль, позволяющий осуществлять синхронизацию вывода в видеопамять.
<span Times New Roman",«serif»; font-style:normal">Модуль V G A 1 3 H — модуль для работы с графикой.
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">ЗАКЛЮЧЕНИЕ
<span Times New Roman",«serif»;font-style:normal"> Таким образом, представляемая компьютерная игра относится к классукомбинаторных игр, поскольку может быть использована как в качестве развивающейвнимание, реакцию, психомоторные навыки(способности) игры, так и для приятного времяпрепровождения и отдыха. Присоздании компьютерной игры мы старались сделать её по возможности красочнее,интереснее и увлекательнее.
<span Times New Roman",«serif»;font-style:normal"> Мы бы порекомендовали эту игру для детей школьного возраста, однако, показав ее врозлым, она заинтересовала и их. Поэтому нам кажется, что она вполне пригодна и для более взрослой аудитории.
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">
<span Times New Roman",«serif»;font-style:normal">СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
<span Times New Roman",«serif»;font-style:normal">1.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Игнатьева А.И. Компьютерные игры. (с. 3-10, 31-35) М.1988.<span Times New Roman",«serif»;font-style:normal">2.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Домашний компьютер — №4(с.62-68),1999<span Times New Roman",«serif»;font-style:normal">3.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Домашний компьютер — №12(с.78-88),1999<span Times New Roman",«serif»;font-style:normal">4.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Инфо–№2: Компьютерные игры вобучение (с.61-65) /Под ред. Марнуми Е., Когов Ю. 1990.<span Times New Roman",«serif»;font-style:normal">5.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal">Лукашенко М.А. «Информатика виграх и задачах» (с.1-5) //Нач.шк. /Приложение к газете «1 сентября» — 1994,№44<span Times New Roman",«serif»;font-style:normal">6.<span Times New Roman"">
<span Times New Roman",«serif»;font-style:normal"> Инфо-№4: Компьютерная игра: учим или играем(64-67) /Под ред.<span Times New Roman",«serif»;font-style:normal">Марусева И.В. 1997.
<span Times New Roman",«serif»; font-style:normal">7. Коубс Р. и Влейминк И. Интерфейс (36-40) 1991.
<span Times New Roman",«serif»; font-style:normal">8. Ла Мот А. Секреты программирования игр (7-10) 1995.
<span Times New Roman",«serif»; font-style:normal">9. Фридланд А.Я. Информатика. Толковый словарь основныхтерминов. (57-62) М. 1998.
<span Times New Roman",«serif»; font-style:normal">10. 350 игр для IBM PC, Дж. Дворак, «Пергамент» - Санкт -Петербург, 1994 .
<span Times New Roman",«serif»; font-style:normal">11. Turbo Pascal 7. 0, Фаронов В.В. /Изд. «Нолидж», 1999.
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»; font-style:normal">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»">
<span Times New Roman",«serif»; font-style:normal">ПРИЛОЖЕНИЕ
<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-style:normal">:Program Siege;
UsesLogoScreen,
DOS, VGA13h, VGASpr, Retrace, Buttons,
SiegeLogo, SiegeS
pr;
Type
EnemyType = record
X,Y,D,S,A:Integer;
Falling:Boolean;
Free:Boolean;
end;
Const
MaxEnemies = 50;
ComboStr:Array [0..5] of String[20] =
('Looser!!!',
'',
'2 hit combo',
'Eat this!',
'Ough! 4 mans at once',
'Aaaaaaaaamazing!!!');
Var
ManX,StoneY,StoneX,EnemyDelay,EnemyLimit:Integer;
Enemies:Array [1..MaxEnemies] of EnemyType;
Score,Level,Kills,Combo:Word;
Timer:Longint;
GameOver:Boolean;
{==================================================================}
Const
ca:Word = 0;
cc:String[20] = '';
ProcedureComboString(s:String);
begin
if s<>'' then
begin
cc:=s;
ca:=10;
end;
if ca>0 then
begin
DrawString(Base2,160-Byte(cc[0])*4,90,cc);
Dec(ca);
end;
end;
ProcedureNextLevel; forward;
{==================================================================}
ProcedureInitEnemies;
Var
i:Byte;
begin
for i:=1 to MaxEnemies doEnemies[i].Free:=true;
end;
ProcedureDrawEnemies;
Var
i:Byte;
begin
for i:=1 to MaxEnemies do
With Enemies[i] do if not Free then
DrawTSpr(Base2,X,Y,EnemyHgt,EnemyWdt,@EnemySpr[A]);
end;
ProcedureMoveEnemies;
Var
i:Byte;
begin
for i:=1 to MaxEnemies do
With Enemies[i] do
if not Free then
begin
if Falling then
begin
Y:=Y+10;
if Y>199 then
begin
Free:=true;
if Kills=(Level+1)*20 then NextLevel;
end;
if D=0 then
begin
Inc(A);
if A>2 then A:=1;
D:=2;
end else Dec(D);
end else
if D=0 then
begin
Y:=Y-5;
if Y<40 then GameOver:=true;
Inc(A);
if A>2 then A:=1;
D:=S;
end else Dec(D);
end else
if (EnemyLimit>0) and (EnemyDelay=0) then
begin
X:=Random(38)*8;
Y:=200;
D:=0;
S:=(10-Level);
A:=1;
EnemyDelay:=(13-Level)*2+1;
Falling:=false;
Free:=false;
Dec(EnemyLimit);
end;
Dec(EnemyDelay);
end;
{==================================================================}
ProcedureDrawScreen;
Var
x,y:Integer;
s:String[80];
tmp:String[6];
begin
Bar(Base2,0,0,319,9,8);
FillBase(Base2,3200,9600,$03030303);
for y:=0 to 15 do
for x:=0 to 31 do
DrawOSpr(Base2,x*10,40+y*10,BrickHgt,BrickWdt,@BrickSpr);
s:='ю~SIEGE~ ю Level:';
Str(Level,tmp);
While Byte(tmp[0])<2 do tmp:='ъ'+tmp;
s:=s+tmp+' ю Score:';
Str(Score,tmp);
While Byte(tmp[0])<5 do tmp:='ъ'+tmp;
s:=s+tmp+' ю';
DrawString(Base2,1,1,s);
end;
{==================================================================}
ProcedureDrawMan;
begin
if StoneY=0 then
begin
DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[2]);
DrawTSpr(Base2,ManX*8+4,17,StoneHgt,StoneWdt,@StoneSpr);
end else
begin
DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[1]);
DrawTSpr(Base2,StoneX,StoneY,StoneHgt,StoneWdt,@StoneSpr);
Inc(StoneY,10);
if StoneY>199 then
begin
StoneY:=0;
if Combo<7 thenComboString(ComboStr[Combo]) else ComboString('Kiiler!!!');
Combo:=0;
end;
end;
end;
{==================================================================}
ProcedureCheckCollisions;
Var
i:Byte;
begin
if StoneY>0 then
for i:=1 to MaxEnemies do
With Enemies[i] do
if not Free and not Falling then
begin
if ((StoneX+8>X) and(StoneX<X+EnemyWdt)) and
((StoneY+8>Y) and(StoneY<Y+EnemyHgt)) then
begin
Falling:=true;
D:=0;
Inc(Score);
Inc(Kills);
Inc(Combo);
end;
end;
end;
{==================================================================}
ProcedureNextLevel;
Var
i:Byte;
begin
Timer:=MemL[Seg0040:$006C];
Inc(Level);
for i:=1 to 30 do
begin
ClearBase(Base2);
DrawScreen;
DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[1+Byte(i and 1=1)]);
DrawString(Base2,132,80,'Level'+Char($30+Level));
WaitRetraceMode;
CopyBase(Base2,Base1);
While Timer=MemL[Seg0040:$006C] do;
Timer:=MemL[Seg0040:$006C];
end;
EnemyLimit:=(1+Level)*20;
EnemyDelay:=0;
Kills:=0;
ca:=0;
end;
ProcedureGameOverProc;
Var
i:Byte;
begin
ClearBase(Base2);
DrawScreen;
DrawString(Base2,124,80,'Game Over');
WaitRetraceMode;
CopyBase(Base2,Base1);
Timer:=MemL[Seg0040:$006C];
for i:=1 to 30 do
begin
While Timer=MemL[Seg0040:$006C] do;
Timer:=MemL[Seg0040:$006C];
end;
end;
{==================================================================}
ProcedureInit;
begin
if not DetectVGA then
begin
Writeln('НеобходимVGA совместимый видеоадаптер.'#7);
Halt(1);
end;
SetGraphMode;
InitButtons;
Randomize;
ManX:=19;
Timer:=MemL[Seg0040:$006C];
EnemyLimit:=(Level+1)*20;
GetIntVec($43, Pointer(Font));
end;
ProcedureGame;
begin
InitEnemies;
Level:=0;
Score:=0;
Kills:=0;
Combo:=0;
EnemyLimit:=(Level+1)*20;
GameOver:=false;
Repeat
ClearBase(Base2);
DrawScreen;
DrawEnemies;
DrawMan;
ComboString('');
MoveEnemies;
CheckCollisions;
if Key[keyLeft] then if ManX>0 thenDec(ManX);
if Key[keyRight] then if ManX<38 thenInc(ManX);
if Key[keySpace] then if StoneY=0 then
begin
StoneX:=(ManX*8)+4;
StoneY:=24;
end;
WaitRetraceMode;
CopyBase(Base2,Base1);
While Timer=MemL[Seg0040:$006C] do;
Timer:=MemL[Seg0040:$006C];
Until Key[keyEsc] or (Level>=10) orGameOver;
if GameOver then GameOverProc;
end;
ProcedureDone;
begin
DoneButtons;
SetTextMode;
DoneVirtualPage;
end;
{==================================================================}
Var
choice:Byte;
begin
Init;
Repeat
choice:=Logo;
Case choice of
1:Game;
2:Info;
3:Story;
end;
Until choice=4;
Done;
end.
<span Times New Roman",«serif»;mso-ansi-language:EN-US">
UNIT Buttons;
INTERFACE
UsesDOS;
Const
keyESC = 1;
keyF1 = 59;
keyF2 = 60;
keyF3 = 61;
keyF4 = 62;
keyF5 = 63;
keyF6 = 64;
keyF7 = 65;
keyF8 = 66;
keyF9 = 67;
keyF10 = 68;
keyF11 = 87;
keyF12 = 88;
keyScrollLock = 70;
keyTilde = 41;
key1 = 2;
key2 = 3;
key3 = 4;
key4 = 5;
key5 = 6;
key6 = 7;
key7 = 8;
key8 = 9;
key9 = 10;
key0 = 11;
keyUnderline = 12;
keyEquality = 13;
keyBackspace = 14;
keyTab = 15;
keyQ = 16;
keyW = 17;
keyE = 18;
keyR = 19;
keyT = 20;
keyY = 21;
keyU = 22;
keyI = 23;
keyO = 24;
keyP = 25;
keyIndex = 26;