Реферат: Разработка игровой программы на языке программирования 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;

еще рефераты
Еще работы по программированию, базе данных