">
Информатика Программирование
Информация о работе

Тема: Реферат и ключевые слова

Описание: Анализ предметной области реализация программы. Описание алогитмов программы. Руководство пользователя. Приложения реферат и ключевые слова. Задачи методы исследования. Реализация программы. Структура программы. Процедуры и функции. Руководство программиста.
Предмет: Информатика.
Дисциплина: Программирование.
Тип: Курсовая работа
Дата: 30.08.2012 г.
Язык: Русский
Скачиваний: 2
Поднять уникальность

Похожие работы:

СОДЕРЖАНИЕ

Задание……………………………………………………….……………...…1

Реферат и ключевые слова…………………………………..….………….....2

Введение………………………………………………………………….…....3

АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ………………………………………..7

1.1 Описание предметной области……………………………...…………….7

1.2 Назначение и область применение……………………………………….7

РЕАЛИЗАЦИЯ ПРОГРАММЫ………………………………………………..9

2.1. Описание алгоритма функционирования………………..………………9

2.2. Обоснование выбора программных средств…………………………...10

3. ОПИСАНИЕ АЛОГИТМОВ ПРОГРАММЫ……………………………….15

3.1 Используемые модули……………….…………………….………….…16

3.2 Структура программы……………………………….…….……………..16

4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ………………………………...……….22

3.1. Руководство (системного) программиста……………………………...22

3.2. Руководство оператора (пользователя)………………………………...24

ЗАКЛЮЧЕНИЕ……………………………………………………………………25

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ ………………….…………..26

ГЛОССАРИЙ И СПИСОК АББРЕВИАТУР…….………………….………....27

ПРИЛОЖЕНИЯ…………………………………………………………………...28

Приложение 1. Текст программы…………………………………………..……...29

Приложение 2. Скриншоты работы программы……………………………….…47

РЕФЕРАТ И КЛЮЧЕВЫЕ СЛОВА

В данной работе представлены обобщенный алгоритм, структура и реализация игры «Лабиринт». Описан выбор среды программирования и руководство пользователя.

Borland.

CRT

GraphABC

Pascal.

String.

Turbo Pascal

Word

Windows 98

Windows Me

Windows 2000

Windows XP

Игра

Колобок

Лабиринт

ВВЕДЕНИЕ

В данной работе изложен материал по разработке программного продукта «Игра Лабиринт», созданного для использования в операционных системах MS DOS, семейства MS Windows 9x, MS Windows XP, . Данное приложение предназначено для развлечения и является игровым.

Всегда с момента появления первых ПЭВМ существовал интерес пользователей к каким-либо компьютерным играм. Существуют как сложные компьютерные игры, так и относительно простые. Данное приложение относится к простым играм.

Основанием для разработки явилось выполнение курсовой работы. Возникла потребность в создании относительно несложной компьютерной игры, тренирующей реакцию.

Актуальность разработки.

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

В игровой программе «Лабиринт» решены данные проблемы.

Игровой процесс является очень простым в управлении персонажом и наблюдения за ходом игры.

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

Цель работы.

Целью выполнения настоящей курсовой работы является создание игрового продукта, предназначенного для развлечения пользователей, совершенствования их реакции. В рамках данной курсовой работы реализуется всем хорошо известная игра “Лабиринт”. Таким образом, задачей в данном случае является разработка и реализация алгоритма данной игры.

Для достижения поставленной цели были сформулированы и решены следующие задачи:

1.Изучить принципы и правила игры «Лабиринт”.

2.Выбрать технологии реализации создаваемой системы.

3.Реализовать основные модули системы.

4.Сформировать документацию.

Объект исследования.

В качестве объекта был выбран процесс и правила игры «Лабиринт”, позволяющей пользователю совершенствовать координацию движения.

Для достижения поставленной цели были сформулированы и решены следующие задачи:

изучен алгоритм выполнения поразрядных операций сложения и вычитания на счетах,

составлен алгоритм программы и выбраны структуры данных,

обоснован выбор среды разработки,

реализовано программа в выбранной среде.

Для решения поставленных задач были применены следующие общепринятые методы исследования:

1.теоретические (анализ различной литературы по проблеме исследования),

2.эмпирические (моделирование процесса игры).

Предметом исследования является игровая программа «Лабиринт”.

Гипотеза исследования.

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

Новизна работы.

Новизна работы заключается в простом и быстром запуске игровой программы.

Таким образом пользователь может быстро запустить игровой процесс, приостановить его, и даже закрыть.

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

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

Практическая значимость.

Игровая программа может использоваться для краткого и долгого времяпровождения дома и в других местах.

Игровая программа также развивает реакцию и логическое мышление человека.

Структура и объем работы.

Курсовая работа состоит и Введения, «обоснования выбора программных средств», «общей структуры программы», «Руководства пользователя», , Заключения, Списка используемых источников и Приложения; пояснительная записка представлена на … страницах.

Во введении представлена актуальность темы, цель, задачи, определен объект и предмет исследования.

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

В разделе «Общая структура программы» рассмотрены используемые модули из которых состоит игровая программа и структура программы.

Заключение содержит итоги и предложения по выполненной работе.

В библиографическом списке представлены используемые источники.

В приложение вынесен листинг программы с комментариями, иллюстрации работающей программы (два рисунка).

АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

Описание предметной области.

Предметной областью в рамках данного проекта является организация игрового процесса игровой программы “Лабиринт”. Эта область содержит решение таких задач как:

реализация методов, выбирающих где , и как разместить яблоки;

реализация методов изменения направления движения ”колобка” по команде пользователя;

уничтожение “колобка” при встрече с охранниками;

В существующей информационной системе пользователю предлагаются похожие алгоритмы реализации.

Основные функциональные возможности и требования к программе

Можно выделить основные функциональные возможности и требования.

Функциональные возможности:

Отображение на экране игрового процесса;

Предоставление возможности пользователю изменять направление движения “колобка”;

Требования:

Автоматическая остановка игры при встрече «колобка» с охранником;

Возможность изменения направления движения «колобка»;

Контроль выхода фигуры за установленные границы короба;

Использование небольшого объема оперативной памяти компьютера;

Возможность использования ПП на любой версии ОС MS DOS, MS Windows, начиная с версии 9х;

Удобный и интуитивно понятный интерфейс приложения

Создание «Лабиринт», история развития ее аналога.

За основу игровой программы «Лабиринт» была взята популярная игра Pac-Man. Игра была разработана в основном работником компании Namco Тору Иватани в течение восемнадцати месяцев. В оригинале она называлась pakku-man [пакку-ман].

Компьютерная игра Pac-Man в жанре аркады, впервые вышла в 1979 году в Японии. Pac-Man оказался совершенно новым стилем игры, не предполагающей насилия, потому игра позиционировалась как для мальчиков, так и для девочек.

Главный герой появляется более чем в 30 официально лицензированных играх и продолжениях, а также в бесчисленных неофициальных клонах и подделках.

Однако в следующем году за игру взялась компания Midway из США. Игра стала называться Pac-Man из-за того, что название PUCK MAN было слишком близко к ругательству (англ. FUCK), и вандалы могли легко его поменять, что загубило бы игру на корню. Однако в Европе можно найти как автоматы Pac-Man, так и PUCK MAN.

За свою историю Pacman много раз видоизменялся, он получил объемное тело, жену Mrs. Pacman и сына Jr. Pacman.

1.2 Назначение и область применение.

В данном задании необходимо разработать развлекательную программу, представляющую собой игру. Область применения: досуг программиста. Поскольку ставится задача разработать приложение для Windows, то использоваться программа может только под управлением Windows 9х - Vista.

Поскольку ставится задача разработать приложение для Windows, то использоваться программа может только под управлением ОС Windows.

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

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

Игровая программа не несет познавательной информации, ее задача развить определённые качества, навыки - память, наблюдательность, внимание, мышление и т.д.

ВЫВОДЫ

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

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

На основе разложения программы на отдельные модули будет реализована программа, а также организованы необходимые наборы данных для каждого модуля;

Определены задачи игровой программы;

Определены назначение и область применения игровой программы;

Разработан план модифицируемой игры «Лабиринт»;

2.РЕАЛИЗАЦИЯ ПРОГРАММЫ

2.1. Описание алгоритма функционирования

При выключении игры, сначала происходит инициализация графической системы и перевод видеокарты в графический режим. На экране появляется изображение, начинается игровой процесс, изображенный на Рис.П.1.1

В начале игры «Лабиринт» не двигается, чтобы привести его в движение необходимо нажать клавиши управляющие колобком.

Если нажата клавиша, содержащая символ «2» Колобок движется вниз, «4» - влево, «6» - вправо, «8» -вверх, при этом там, где он прошел исчезают точки, которые Колобок должен собрать.

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

При столкновении «колобка» с охранником, «колобок» исчезает и теряется одна жизнь.

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

При этом количество очков набранных пользователем увеличивается на 500. Если нажата клавиша, содержащая символ «I» игра приостанавливается, в нижней части экрана (Рис.П.1.2)появляется информация о том какими клавишами можно управлять «колобком» также предоставляется информация о том какой клавишей можно приостановить игру(«P»), возобновить её («S») и выйти из игры («Q»).

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

План развертывания

Для полнофункциональной работы программы необходимо наличие всего 2 файлов:

исполняемого файла приложения (Labirint.pas);

набора графических драйверов (Egavga.bgi);

Надежность и безопасность приложения зависит от надежности и безопасности программно-аппаратных средств компьютера и используемой .

2.2. Обоснование выбора программных средств

Выбор языка программирования.

Язык программирования Pascal как язык для написания игровой программы был выбран по следующим причинам:

благодаря своей компактности, удачному первоначальному описанию Pascal оказался достаточно легким для обучения.

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

язык Pascal позволяет четко реализовывать идеи структурного проектирования и структурной организации данных.

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

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

использование в Pascal простых и гибких структур управления: ветвлений циклов.

Для реализации данных алгоритмов был выбран язык Pascal. Его основные преимущества заключаются в следующем:

Многофункциональный и удобный отладчик;

Хорошая справка- большинство полезных команд и многое другое подробно описаны;

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

Язык Pascal разработан с учетом принципов структурного программирования. Для структурированных программ характерны легкость отладки и корректировки, низкая частота ошибок.

Pascal обладает полным набором структурных типов данных таких как простые переменные, массивы, файлы, множества, записи, записи с вариантами, ссылочные переменные.

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

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

Выбор среды программирования.

В среды программирования для реализации игровой программы «Лабиринт” выбран язык Turbo Pascal, поскольку он позволяет полностью реализовать программу, удовлетворяя начальным условиям курсовой работы.

В ходе выбора среды разработки, были учтены следующие преимущества «Turbo Pascal»:

Качественная среда разработки, включающая мощный отладчик;

Удачная система помощи — язык можно изучить лишь по справочным статьям, без посторонних книг;

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

Качественно реализованное объединение Pascal и Assembler

Turbo Pascal — среда разработки программного обеспечения для платформы DOS. Название Borland Pascal было зарезервировано для дорогих вариантов поставки (с большим количеством библиотек и исходным кодом стандартной библиотеки), оригинальная дешёвая и широко известная версия продавалась как Turbo Pascal.

Название Borland Pascal также используется в более широком смысле — как обозначение диалекта языка Pascal от фирмы Borland.

Некоторые из основных расширений Pascal-стандарта и дополнительные возможности «Turbo»:

Введены типы данных word, byte, string.

Введены понятия типизированного и нетипизированного файлов и разработаны соответствующие процедуры.

В «Turbo Pascal» разработаны процедуры и функции ввода-вывода для работы с любыми файлами.

Предусмотрены процедуры и функции для работы с переменными типа string.

В «Turbo Pascal» разработаны программные средства для построения графических изображений на экране компьютера; создана интегрированная Среда разработчика (ИСР), то есть ряд специализированных средств и возможностей, позволяющих создавать на экране персональной ЭВМ так называемые “окна”.

В рамках этих окон, рабочих областей, пользователь может задавать те или иные действия. ИСР является средством, используемым при создании, редактировании, компиляции, выполнении и отладке Pascal-программ.

В «Turbo Pascal» введено понятие модуля, определены его соответствующие части и разрешена отдельная компиляция модулей.

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

Выбор операционной системы.

Разрабатываемая игровая программа будет использоваться в операционной системе Windows. Это известная и проверенная временем операционная система очень популярна в наше время. Многие пользователи ставят ее в предпочтение другим.

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

Популярность ОС Windows обеспечили следующие ее свойства:

приятный внешний вид пользовательского интерфейса;

простота в работе;

достаточно высокая производительность;

надежность хранения информации на диске;

поддержка широкого спектра нового оборудования;

устойчивость, надежность работы;

многозадачность.

Кроме того, исключительно важной чертой Windows является единый стандарт в работе, как с самой системой, так и с ее программными приложениями.

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

ВЫВОДЫ

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

В качестве языка программирования выбран язык Borland Pascal 7.0;

В качестве среды программирования выбран «Turbo Pascal»;

Описан алгоритм игровой программы «Лабиринт»;

Разработан и описан пользовательский интерфейс игровой программы «Лабиринт» с интуитивно-понятным управлением приложением;

Составлен план развертывания игровой программы «Лабиринт»;

Составлен алгоритм функционирования игровой программы;

Составлен план развертывания игровой программы;

Выбрана среда программирования «Turbo Pascal»;

Выбрана операционная система Windows.

3. ОПИСАНИЕ АЛОГИТМОВ ПРОГРАММЫ

3.1. Используемые модули

Разрабатываемое программное средство физически состоит из 3 частей:

исполняемый файл приложения (Labirint.pas) ,содержащий исходный код игровой программы, предназначенный для редактирования в среде Turbo Pascal;

графический драйвер (Egavga.bgi), нужный для вывода графики на экран.В редактировании в большинстве случаев не нуждается;

скомпилированный файл (Labirint.exe), предназначенный для запуска игровой программы на ПК без установленной среды Turbo Pascal, и ей аналогичных сред разработки.

Исполняемый файл приложения можно условно разделить на несколько модулей:

модуль формирования нового уровня;

модуль обработки действий пользователя (пользователь оказывает воздействие на программу при помощи главного меню либо клавиатуры);

модуль отображения игрового процесса на экране;

модуль удаления яблок;

модуль определения окончания игры;

3.2 Структура программы

Описать используемые процедуры и функции программы

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

Кроме стандартных модулей программа имеет ряд подпрограмм, реализующих ее функции.

Процедура InitGraph инициирует перевод видеоадаптера в видеорежим.

Процедура ClearDevice очищает выбранное текущим устройство вывода и устанавливает указатель в начальное положение. ClearDevice перемещает текущий указатель в точку (0, 0), и очищает всю доступную видео-память нулями.

Процедура infos.

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

procedure infos;

var i,j,k: integer;

begin

for i:=1 to 2 do begin

if i=1 then

setcolor(3)

else setcolor(0);

outtextxy(180,15,Infos:);

outtextxy(60,452,Left: 4);

outtextxy(60,472,Right: 6);

outtextxy(190,452,Up: 8);

outtextxy(190,472,Down: 2);

outtextxy(320,452,Stop!: 5);

outtextxy(320,472,Pause: P);

outtextxy(450,452,Sound/Sil.:S);

outtextxy(450,472,Exit :Q);

if i=1 then begin

repeat

for j:=1 to 20 do begin

for k:=1 to 2 do begin

if k=1 then setcolor(4) else setcolor(0);

outtextxy(380+1*j,15,G);

outtextxy(390+2*j,15,A);

outtextxy(400+3*j,15,M);

outtextxy(410+4*j,15,E);

if k=1 then delay(d500);

end;

end;

for j:=20 downto 1 do begin

for k:=1 to 2 do begin

if k=1 then setcolor(4) else setcolor(0);

outtextxy(380+1*j,15,G);

outtextxy(390+2*j,15,A);

outtextxy(400+3*j,15,M);

outtextxy(410+4*j,15,E);

if k=1 then delay(d500);

end;

end;

until keypressed;

end;

end;

end;

Данная процедура предоставляет информацию пользователю о игре. Далее в программе 6улет описано, что при нажатии на клавишу, содержащую символ «I» вызывается процедура Infos, при этом игра приостанавливается и в нижней части экрана появляется информация о том какими клавишами можно управлять «колобком», также предоставляется информация о том какой клавишей можно приостановить игру, возобновить её и выйти из игры.

Прибавление жизней.

if bonus=true then begin

bonus:=false;

if son=true then begin

for a:=1 to 4 do begin

sound(440*a);

delay(d500*2);

end;

nosound;

end;

setcolor(0);

str(vies,s);

outtextxy(105,40,s);

vies:=vies+1;

setcolor(3);

str(vies,s);

outtextxy(105,40,s);

end;

Данная часть кода программы добавляет жизнь «колобку» ну, и в верхней части экрана, к количеству жизней прибавляет еще одну, ранее в программе описано, что bonus=true, тогда, когда количество очков , набранных игроком, которые выводятся в верхней части, экрана равно 4000.

KeyPressed - функция языка Turbo Pascal, которая определяет, была ли нажата клавиша на клавиатуре. Функция KeyPressed возвращает значение True, если клавиша была нажата и False, если не была.

Процедура PutImage помещает битовое изображение на экран.

Точка с координатами (X, Y) - верхний левый угол прямоугольной области на экране.

BitMap - нетипизированный параметр, в котором содержится высота, ширина и двоичный образ изображения, которое будет помещено на экран.

BitBlt определяет, какая двоичная операция будет использована при выводе изображения на экран. Каждой двоичной операции соответствует константа.

PutImage (X, Y, BitMap, XORPut) помещает на экран изображение, сохраненное в BitMap с позиции (X, Y) используя команду ассемблера XOR для каждого байта в изображении. Это часто используемая методика в анимации для перемещения изображения по экрану.

PutImage (X, Y, Растр, NotPut) инвертирует биты в BitMap и затем помещает на экран изображение, сохраненное в BitMap с позиции (X, Y) используя команду ассемблера MOV для каждого байта в изображении.

Таким образом, изображение появляется в инвертированном виде по отношению к первоначальному.

Процедура NoSound (выключить звук) является дополнением к процедуре Sound (включить звук), так как звук выключить можно только в том случае, если он был ранее включен.

Графические функции выполняются подпрограммами box, bone, move.

Procedure CloseGraph;

Процедура CloseGraph восстанавливает первоначальный видеорежим, освобождает память, занятую в куче графическим буфером сканирования. CloseGraph также освобождает память, занятую буферами драйверов и шрифтов, если они были распределены обращениями к GraphGetMem и GraphFreeMem.

Основные процедуры и функции модуля GRAPH.

Процедура InitGraph инициирует перевод видеоадаптера в видеорежим. Общий вид:

InitGraph(Driver,Mode,Path);

Driver - параметр, определяющий графический драйвер; 0 - автоопределение,9 - VGA.

Mode - параметр, задающий один из графических режимов. Для VGA 0 - 640X200 16 цветов, 1- 640Х350 16 цветов, 2 - 640Х480 16 цветов. Если стоит автоопределение, то параметр Mode надо задавать, выбор будет сделан в пользу максимально возможного из режимов.

Path - имя файла и путь графического драйвера.

Процедура DetectGraph тестирует аппаратуру и определяет, какой графический драйвер и режим (максимально допустимые) подходят для данного видеоадаптера.

Функция GraphResult возвращает код ошибки графической операции, выполнявшейся последней.

Функция GraphErrorMsg возвращает текст, по-английски, сообщения об ошибке.

Процедура RestoreCrtMode осуществляет переход в видеорежим (текстовый), который использовался до перехода в графический режим. Не освобождает память и не сбрасывает параметры графического режима.

Процедура SetGraphMode устанавливает для используемого драйвера новый графический режим и очищает экран. Переходит в один из доступных режимов для данного драйвера (в отличие от InitGraph). Общий вид:

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

ВЫВОДЫ

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

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

Выбраны используемые модули игровой программы;

Выбраны используемые процедуры и функции для игровой программы.

4.РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

4. 1. Руководство (системного) программиста

Программа запускается из текущего каталога двойным щелчком на файле Labirint.exe.

Следует избегать удаления или изменения этого файла для обеспечения нормального функционирования программы.

Размер программы 33,2 Кбайта. •

Для работы настройка программы в большинстве случаев не требуется.

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

Минимальный состав используемых технических средств:

IBM PC совместимый с процессором 80386 и выше

ОЗУ более 32 Мбайт

16 МБ видеопамяти и выше

наличие свободного места на жестком диске более 100 Кбайт.

Минимальный состав программных средств

Системные программные средства, используемые игровой программой, должны быть представлены локализованной версией следующих операционных систем:

Windows 98

Windows Me

Windows 2000

Windows XP.

Требования к персоналу (системному программисту)

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

В перечень задач, выполняемых системным программистом , должны входить:

задача поддержания работоспособности технических средств;

задача установки (инсталляции) игровой программы;

задача поддержания работоспособности системных программных средств и операционной системы;

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

Настройка на состав технических и программных средств

Игровая программа в редких случаях требует каких либо настроек на состав технических и аппаратных средств.

Если возникли проблемы с запуском и работой игровой программы, то надо правой кнопкой кликнуть по файлу «Labirint.exe» ,и выбрать пункт меню: «Свойства». Далее в появившемся окне « Свойства» появятся вкладки:

Общие

Программа

Шрифт

Память

Экран

Безопасность

Совместимость

Подробно

Предыдущие версии

Разное

Настройка игровой программы проходит также, как и настройка обычного Dos-приложения.

Описание способов проверки

Основной функцией программы «LABIRINT.EXE» является запуск игровой программы. Работоспособность игровой программы проверяется описанными ниже способом. Вызов программы производится по таймеру, каждый час, в ХХ.15.00 (в 15 минут каждого часа).

4. 2. Руководство оператора (пользователя)

Начало работы

Программа запускается двойным щелчком на файле «Labirint.exe».

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

Игровой процесс

После запуска программы на экране отображаются игровое поле. После нажатия на клавишу « 2» появляется игровое меню.

В меню можно выбрать:

игровой уровень:

уровень громкости:

выход из игры:

Завершение работы

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

ВЫВОДЫ

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

составлено руководство (системного) программиста

составлено руководство оператора (пользователя)

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

определен минимальный состав программных средств

определены требования к персоналу (системному программисту)

расписаны настройки на состав технических и программных средств. ЗАКЛЮЧЕНИЕ

Результатом данной работы является созданная игровая программа «Лабиринт». Разработанный продукт является полностью функциональным (все необходимые функции в нем реализованы).

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

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

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

Игровая программа реализована в среде программирования Turbo Pascal. В последующих версиях приложения предполагается усовершенствование пользовательского интерфейса и механизмов функционирования.

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

Игровая программа прошла комплексное тестирование на предмет выявления ошибок в проектировании и реализации программы.

Игровая программа соответствует всем эргономическим требованиям и требованиям ГОСТа и обладает функциональностью, надежностью, мобильностью и удобством использования.

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

Семенов А.И., Семенова О.В. Программирование. Учебное пособие. – Абакан: Издательство Хакасского государственного университета им. Н.Ф. Катанова, 2005. - 156 с.: ил.

Петзолд Ч. Программирование для Windows 95 в двух томах – Спб.: «BHV-Санкт Петербург», 2000.

Окулов С.М. Основы программирования. В 3-х ч. – Киров: Изд-во ВГПУ, 2000.

Сафьянова Е.Н. Основы алгоритмизации и программирование. Учебное пособие. Томск, 2000 г.

Сергеев А.Н. Изучаем Паскаль. Учебное пособие. Версия 1.1. // Электронный учебник для студентов и школьников. http://www.fizmat.vspu.ru/books/pascal/index.html.

Епанешников А.М. Епанешников В.А. - "Программирование в среде Turbo Pascal 7.0". Москва "Диалог - МИФИ". 2000г. 368с.

Марченко А.И. Марченко Л.А. - "Программирование в среде Turbo Pascal 7.0". Киев "Век+". 1999г. 460с.

Попов В.Б. - "Turbo Pascal для школьников." Москва. "Финансы и статистика". 1998г. 464с.

Под редакцией Усковой О.Ф. "Программирование на языке Паскаль. Задачник". Санкт-Петербург. "Питер". 2002г. 334с.

В.Н.Пильщиков - "Сборник упражнений по языку Паскаль". Москва. "Наука". 1989г. 160с.

ГЛОССАРИЙ И СПИСОК АББРЕВИАТУР

Byte – переменная типа данных.

CRT - модуль CRT предназначен для работы с текстовым окном.

Pascal – язык программирования.

String - переменная типа данных.

Turbo Pascal - Pascal Turbo& Borland.

Word – переменная типа данных.

Windows 98 – операционная система.

Windows Me – операционная система.

Windows 2000 – операционная система.

Windows XP – операционная система.

Колобок – игровой персонаж.

ПРИЛОЖЕНИЯ

Приложение 1. Листинг программы

program labirint;

uses crt, graph;

const

{vv} d500=50; {short delay}

{vv} d1500=1000; {long delay}

type point=^element;

element=record

im: pointer;

nxt: point;

end;

fx=^coord;

coord=record

fa, fo, rf, delais: integer;

nxt: fx;

end;

tableau=array[1..3]of integer;

procedure infos;

var i,j,k: integer;

begin

for i:=1 to 2 do begin

if i=1 then

setcolor(3)

else setcolor(0);

outtextxy(180,15,Adaptation of the game:);

outtextxy(60,452,Left: 4);

outtextxy(60,472,Right: 6);

outtextxy(190,452,Up:8);

outtextxy(190,472,Down: 2);

outtextxy(320,452,Stop!: 5);

outtextxy(320,472,Pause: P);

outtextxy(450,452,Sound/Sil.:S);

outtextxy(450,472,Iwannaquit:Q);

if i=1 then begin

repeat

for j:=1 to 20 do begin

for k:=1 to 2 do begin

if k=1 then setcolor(4) else setcolor(0);

outtextxy(380+1*j,15,F);

outtextxy(390+2*j,15,r);

outtextxy(400+3*j,15,e);

outtextxy(410+4*j,15,d);

if k=1 then delay(d500);

end;

end;

for j:=20 downto 1 do begin

for k:=1 to 2 do begin

if k=1 then setcolor(4) else setcolor(0);

outtextxy(380+1*j,15,F);

outtextxy(390+2*j,15,r);

outtextxy(400+3*j,15,e);

outtextxy(410+4*j,15,d);

if k=1 then delay(d500);

end;

end;

until keypressed;

end;

end;

end;

procedure route(var t: tableau;x,y,fa,fo: integer);

var coef: real;

begin

coef:=(x-fa)/(y-fo+0.1);

if ((coef)>=1)or((coef)<=-1) then begin

if fa>=x then t[1]:=4 else t[1]:=6;

if fo>y then begin t[2]:=8; t[3]:=2; end else begin t[2]:=2; t[3]:=8; end;

end else begin

if fo>=y then t[1]:=8 else t[1]:=2;

if fa>x then begin t[2]:=4; t[3]:=6; end else begin t[2]:=6; t[3]:=4; end;

end;

end;

label 1;

var a, b, c, d, i, j, k, rf, x, y, size, pilote, mode, vies, repas,

t1, t2, t3, t4, t5, t6, t7, t8, niveau: integer;

tar, perdu, son, f1, f2, f3, f4, bonus: boolean;

p, p2, p3, ec, ec2, ec3: point;

fantome, blank, fade, vdt, repos, fromage, barre: pointer;

t: tableau;

pf, pf2, pf3: fx;

temps, points: longint;

stock:Array[1..24] of integer;

s: string;

{vv} r:char;

{vv} err:integer;

begin

randomize;

pilote:=detect;

InitGraph(pilote,mode,c:pgi);

clearviewport;

size:=imagesize(7,7,33,7);

new(fade);

getmem(fade,size);

getimage(7,7,33,7,fade^);

size:=imagesize(7,7,33,33);

new(blank);

getmem(blank,size);

getimage(7,7,33,33,blank^);

for j:=1 to 2 do begin

if j=1 then setfillstyle(1,9) else setfillstyle(1,6);

for i:=1 to 4 do begin

cleardevice;

pieslice(20,20,5*i,360-5*i,10);

rectangle(19,14,20,15);

size:=imagesize(7,7,33,33);

if j=1 then begin

new(p2);

getmem(p2^.im,size);

getimage(7,7,33,33,p2^.im);

if i=1 then begin

p:=p2;

p3:=p;

end else begin

p3^.nxt:=p2;

p3:=p2;

end;

end else begin

new(ec2);

getmem(ec2^.im,size);

getimage(7,7,33,33,ec2^.im);

if i=1 then begin

ec:=ec2;

ec3:=ec;

end else begin

ec3^.nxt:=ec2;

ec3:=ec2;

end;

end;

end;

for i:=3 downto 2 do begin

cleardevice;

pieslice(20,20,5*i,360-5*i,10);

rectangle(19,14,20,15);

size:=imagesize(7,7,33,33);

if j=1 then begin

new(p2);

getmem(p2^.im,size);

getimage(7,7,33,33,p2^.im);

p3^.nxt:=p2;

p3:=p2;

end else begin

new(ec2);

getmem(ec2^.im,size);

getimage(7,7,33,33,ec2^.im);

ec3^.nxt:=ec2;

ec3:=ec2;

end;

end;

p2^.nxt:=p;

ec2^.nxt:=ec;

end;

cleardevice;

setcolor(4);

rectangle(20,20,100,21);

size:=imagesize(20,20,100,21);

new(barre);

getmem(barre,size);

getimage(20,20,100,21,barre^);

cleardevice;

setcolor(4);

line(20,10,30,30);

line(20,10,10,30);

line(10,30,30,30);

line(16,20,20,20);

line(20,20,18,25);

line(18,25,16,20);

line(20,20,24,20);

line(24,20,22,25);

line(22,25,20,20);

setfillstyle(1,4);

floodfill(20,15,4);

floodfill(20,27,4);

setcolor(0);

line(17,27,23,27);

size:=imagesize(7,7,33,33);

new(fantome);

getmem(fantome,size);

getimage(7,7,33,33,fantome^);

setfillstyle(1,10);

floodfill(20,28,0);

size:=imagesize(7,7,33,33);

new(vdt);

getmem(vdt,size);

getimage(7,7,33,33,vdt^);

setfillstyle(1,5);

floodfill(20,28,0);

size:=imagesize(7,7,33,33);

new(repos);

getmem(repos,size);

getimage(7,7,33,33,repos^);

cleardevice;

setcolor(14);

rectangle(9,9,10,10);

size:=imagesize(9,9,10,10);

new(fromage);

getmem(fromage,size);

getimage(9,9,10,10,fromage^);

{1e init}

niveau:=0;

points:=0;

vies:=3;

son:=true;

b:=400;

repeat

cleardevice;

for i:=1 to 19 do

for j:=1 to 13 do

putimage(i*28+36,j*28+45,fromage^,normalput);

setcolor(1);

{bordure}

rectangle(50,60,582,424);

rectangle(49,59,583,425);

{motifs}

rectangle(78,88,161,144);

rectangle(471,88,554,144);

rectangle(78,340,161,396);

rectangle(471,340,554,396);

rectangle(189,60,218,144);

rectangle(414,60,443,144);

rectangle(189,340,218,424);

rectangle(414,340,443,424);

rectangle(246,88,386,144);

rectangle(246,340,386,396);

rectangle(50,172,161,228);

rectangle(471,172,582,228);

rectangle(50,256,161,312);

rectangle(471,256,582,312);

rectangle(189,172,443,312);

rectangle(190,173,442,311);

{Anti-fromages}

setfillstyle(1,0);

floodfill(300,200,1);

{passage secret}

setcolor(0);

rectangle(582,229,583,255);

rectangle(49,229,50,255);

rectangle(304,172,330,173);

{Remplissage}

setfillstyle(1,1);

floodfill(80,90,1);

floodfill(80,350,1);

floodfill(500,350,1);

floodfill(500,90,1);

floodfill(200,90,1);

floodfill(420,90,1);

floodfill(200,400,1);

floodfill(420,400,1);

floodfill(250,100,1);

floodfill(250,350,1);

floodfill(100,200,1);

floodfill(500,200,1);

floodfill(100,300,1);

floodfill(500,300,1);

{camemberts}

setfillstyle(1,2);

setcolor(2);

circle(65,75,5);

floodfill(65,75,2);

circle(65,409,5);

floodfill(67,409,2);

circle(566,75,5);

floodfill(566,75,2);

circle(566,409,5);

floodfill(566,409,2);

setcolor(3);

outtextxy(50,40,lifes:);

outtextxy(156,40,points: Energy:Level:);

outtextxy(290,435,Infos:I);

setcolor(0);

str(niveau,s);

outtextxy(540,40,s);

niveau:=niveau+1;

setcolor(3);

str(niveau,s);

outtextxy(540,40,s);

str(vies,s);

outtextxy(105,40,s);

f1:=true;

f2:=true;

f3:=true;

f4:=true;

repas:=0;

for j:=1 to 16 do

stock[j]:=0;

1:

p2:=p;

ec2:=ec;

temps:=0;

perdu:=false;

new(pf);

pf^.fa:=304;

pf^.fo:=174;

pf^.rf:=4;

pf^.delais:=0;

new(pf2);

pf2^.fa:=304;

pf2^.fo:=210;

pf2^.rf:=8;

pf2^.delais:=0;

pf^.nxt:=pf2;

new(pf3);

pf3^.fa:=304;

pf3^.fo:=240;

pf3^.rf:=8;

pf3^.delais:=0;

pf2^.nxt:=pf3;

pf2:=pf3;

new(pf3);

pf3^.fa:=304;

pf3^.fo:=275;

pf3^.rf:=8;

pf3^.delais:=0;

pf3^.nxt:=nil;

pf2^.nxt:=pf3;

x:=303;

y:=313;

r:=5;

i:=1;

b:=b-20;

c:=b+30;

bonus:=false;

repeat

i:=i+1;

{Pac-itin‚raire}

{vv}if keypressed then r:=upcase(readkey);

{vvif keypressed then r:=ord(readkey)-ord(0);}

{vvif r=ord(s)-ord(0) then son:=(son=false);}

{vv}if r=S then son:=(son=false);

{vvif r=ord(p)-ord(0) then repeat until keypressed;}

{vv}if r=P then repeat until keypressed;

{vvif r=ord(i)-ord(0) then infos;}

{vv}if r=I then infos;

if i mod 4000=0 then if temps=0 then p2:=p2^.nxt else ec2:=ec2^.nxt;

if i mod b=0 then begin

if r=6 then if (getpixel(x+27,y)<>1)and(getpixel(x+27,y+26)<>1) then val(r,d,err);

if r=4 then if (getpixel(x-1,y)<>1)and(getpixel(x-1,y+26)<>1) then val(r,d,err);

if r=2 then if (getpixel(x,y+27)<>1)and(getpixel(x+26,y+27)<>1)and((x<>304)or(y<>145)) then val(r,d,err);

if r=8 then if (getpixel(x,y-1)<>1)and(getpixel(x+26,y-1)<>1) then val(r,d,err);

if r=5 then d:=0;

if d=6 then if (getpixel(x+27,y)<>1)and(getpixel(x+27,y+26)<>1) then x:=x+1 else d:=0;

if d=4 then if (getpixel(x-1,y)<>1)and(getpixel(x-1,y+26)<>1) then x:=x-1 else d:=0;

if d=2 then if (getpixel(x,y+27)<>1)and(getpixel(x+26,y+27)<>1) then y:=y+1 else d:=0;

if d=8 then if (getpixel(x,y-1)<>1)and(getpixel(x+26,y-1)<>1) then y:=y-1 else d:=0;

if ((d=6)and((getpixel(x+27,y+12)=14)or(getpixel(x+27,y+14)=14))

or((d=4)and((getpixel(x-1,y+12)=14)) or(getpixel(x-1,y+14)=14))

or((d=2)and((getpixel(x+12,y+27)=14))or(getpixel(x+14,y+27)=14))

or((d=8)and(getpixel(x+12,y-1)=14)or(getpixel(x+14,y-1)=14))) then begin

setcolor(0);

str(points,s);

outtextxy(220,40,s);

points:=points+10;

if points mod 4000=0 then bonus:=true;

repas:=repas+1;

setcolor(3);

str(points,s);

outtextxy(220,40,s);

end;

if temps>0 then begin

putimage(x,y,ec2^.im,normalput);

temps:=temps-1;

putimage(360+trunc(80*temps/(60*(10-niveau div 2))),20,blank^,normalput);

end else

putimage(x,y,p2^.im,normalput);

if (x=51)and(y=61)and(f1=true) then begin

f1:=false;

temps:=60*(10-niveau div 2);

putimage(360,43,barre^,normalput);

end;

if (x=555)and(y=61)and(f2=true) then begin

f2:=false;

temps:=60*(10-niveau div 2);

putimage(360,43,barre^,normalput);

end;

if (x=51)and(y=397)and(f3=true) then begin

f3:=false;

temps:=60*(10-niveau div 2);

putimage(360,43,barre^,normalput);

end;

if (x=555)and(y=397)and(f4=true) then begin

f4:=false;

temps:=60*(10-niveau div 2);

putimage(360,43,barre^,normalput);

end;

end;

{Route fantome}

tar:=false;

k:=1;

if i mod c=0 then begin

pf2:=pf;

repeat

randomize;

repeat

if (tar=true)or((pf2^.fa=162)and(pf2^.fo=145))or((pf2^.fa=219)and(pf2^.fo=145))

or((pf2^.fa=387)and(pf2^.fo=145))or((pf2^.fa=444)and(pf2^.fo=145))or((pf2^.fa=444)and(pf2^.fo=229))

or((pf2^.fa=444)and(pf2^.fo=313))or((pf2^.fa=387)and(pf2^.fo=313))or((pf2^.fa=162)and(pf2^.fo=313))

or((pf2^.fa=219)and(pf2^.fo=313))or((pf2^.fa=162)and(pf2^.fo=229)) then begin

if (k<3)and(temps=0)and(random(10)>2+(niveau div 2)) then begin

route(t,x,y,pf2^.fa,pf2^.fo);

pf2^.rf:=t[k];

k:=k+1;

end else pf2^.rf:=random(4)*2+2;

end;

if (pf2^.fa=304)and(pf2^.fo=174)and(pf2^.delais=0) then pf2^.rf:=8;

if (pf2^.fa=304)and(pf2^.fo=145)and(pf2^.rf=2) then pf2^.rf:=random(2)*2+4;;

if pf2^.rf=6 then if (getpixel(pf2^.fa+27,pf2^.fo)<>1)and(getpixel(pf2^.fa+27,pf2^.fo+26)<>1) then begin

pf2^.fa:=pf2^.fa+1; tar:=false; end else tar:=true;

if pf2^.rf=4 then if (getpixel(pf2^.fa-1,pf2^.fo)<>1)and(getpixel(pf2^.fa-1,pf2^.fo+26)<>1) then begin

pf2^.fa:=pf2^.fa-1; tar:=false; end else tar:=true;

if pf2^.rf=2 then if (getpixel(pf2^.fa,pf2^.fo+27)<>1)and(getpixel(pf2^.fa+26,pf2^.fo+27)<>1) then begin

pf2^.fo:=pf2^.fo+1; tar:=false; end else tar:=true;

if pf2^.rf=8 then if (getpixel(pf2^.fa,pf2^.fo-1)<>1)and(getpixel(pf2^.fa+26,pf2^.fo-1)<>1) then begin

pf2^.fo:=pf2^.fo-1; tar:=false; end else tar:=true;

until tar=false;

if (pf2^.fa=51)and(pf2^.fo=61) then

f1:=false;

if (pf2^.fa=555)and(pf2^.fo=61) then

f2:=false;

if (pf2^.fa=51)and(pf2^.fo=397) then

f3:=false;

if (pf2^.fa=555)and(pf2^.fo=397) then

f4:=false;

if pf2^.fa>570 then begin pf2^.fa:=35; putimage(570,229,blank^,normalput); end;

if pf2^.fa<35 then begin pf2^.fa:=570; putimage(35,229,blank^,normalput); end;

j:=1;

while (stock[j]<>0)and(j<24) do

j:=j+2;

if (pf2^.rf=6)and((getpixel(pf2^.fa+27,pf2^.fo+12)=14)

or(getpixel(pf2^.fa+27,pf2^.fo+14)=14))and(odd(pf2^.fa))

then begin

stock[j]:=pf2^.fa+27;

stock[j+1]:=pf2^.fo+13;

end;

if (pf2^.rf=4)and((getpixel(pf2^.fa-1,pf2^.fo+12)=14)or

(getpixel(pf2^.fa-1,pf2^.fo+14)=14))and(odd(pf2^.fa))

then begin

stock[j]:=pf2^.fa-2;

stock[j+1]:=pf2^.fo+13;

end;

if (pf2^.rf=2)and((getpixel(pf2^.fa+14,pf2^.fo+27)=14)or

(getpixel(pf2^.fa+12,pf2^.fo+27)=14))and(odd(pf2^.fo))

then begin

stock[j]:=pf2^.fa+13;

stock[j+1]:=pf2^.fo+27;

end;

if (pf2^.rf=8)and((getpixel(pf2^.fa+14,pf2^.fo-1)=14)

or(getpixel(pf2^.fa+12,pf2^.fo-1)=14))and(odd(pf2^.fo))

then begin

stock[j]:=pf2^.fa+13;

stock[j+1]:=pf2^.fo-1;

end;

pf3:=pf;

t1:=pf3^.fa;

t2:=pf3^.fo;

pf3:=pf3^.nxt;

t3:=pf3^.fa;

t4:=pf3^.fo;

pf3:=pf3^.nxt;

t5:=pf3^.fa;

t6:=pf3^.fo;

pf3:=pf3^.nxt;

t7:=pf3^.fa;

t8:=pf3^.fo;

for a:=1 to 6 do begin

j:=2*a-1;

if (stock[j]<>0)

and((t1>stock[j]+3)or(t1or(t2>stock[j+1]+3)or(t2and((t3>stock[j]+3)or(t3or(t4>stock[j+1]+3)or(t4and((t5>stock[j]+3)or(t5or(t6>stock[j+1]+3)or(t6and((t7>stock[j]+3)or(t7or(t8>stock[j+1]+3)or(t8then begin

putimage(stock[j],stock[j+1],fromage^,normalput);

stock[j]:=0;

end;

end;

if (temps=0)and(pf2^.delais=0) then putimage (pf2^.fa,pf2^.fo,fantome^,normalput);

if (pf2^.delais=0)and(temps>0) then putimage (pf2^.fa,pf2^.fo,vdt^,normalput);

if pf2^.delais>0 then begin

putimage(pf2^.fa,pf2^.fo,repos^,normalput);

pf2^.delais:=pf2^.delais-1;

end;

{Fantome bouff‚?}

if (getpixel(pf2^.fa+30,pf2^.fo+10)=6)or(getpixel(pf2^.fa-3,pf2^.fo+10)=6)

or(getpixel(pf2^.fa+15,pf2^.fo-3)=6)or(getpixel(pf2^.fa+15,pf2^.fo+30)=6) then begin

for j:=1 to 26 do begin

putimage(pf2^.fa,pf2^.fo+j,fade^,normalput);

if son=true then sound(j*100);

delay(d500);

end;

nosound;

setcolor(0);

str(points,s);

outtextxy(220,40,s);

points:=points+500;

if (points div 4000)<>((points-500) div 4000) then bonus:=true;

setcolor(3);

str(points,s);

outtextxy(220,40,s);

pf2^.fa:=350;

pf2^.fo:=250;

pf2^.delais:=(10-niveau)*100;

end;

{bonus?}

if bonus=true then begin

bonus:=false;

if son=true then begin

for a:=1 to 4 do begin

sound(440*a);

delay(d500*2);

end;

nosound;

end;

setcolor(0);

str(vies,s);

outtextxy(105,40,s);

vies:=vies+1;

setcolor(3);

str(vies,s);

outtextxy(105,40,s);

end;

{fin?}

if (getpixel(pf2^.fa+30,pf2^.fo+10)=9)or(getpixel(pf2^.fa-3,pf2^.fo+10)=9)

or(getpixel(pf2^.fa+15,pf2^.fo-3)=9)or(getpixel(pf2^.fa+15,pf2^.fo+30)=9) then begin

setcolor(0);

str(vies,s);

outtextxy(105,40,s);

vies:=vies-1;

setcolor(3);

str(vies,s);

outtextxy(105,40,s);

pf2:=pf^.nxt;

for j:=1 to 26 do begin

putimage(x,y+j,fade^,normalput);

if son=true then sound(3000-j*100);

delay(d500);

end;

nosound;

pf2:=pf;

repeat

putimage(pf2^.fa,pf2^.fo,blank^,normalput);

pf2:=pf2^.nxt;

until pf2=nil;

delay(d500*3);

if vies=0 then

perdu:=true;

if vies>0 then goto 1;

tar:=false;

end;

pf2:=pf2^.nxt;

until (pf2=nil)or(perdu=true);

end;

{Passage secret}

if x>570 then begin x:=35; putimage(570,229,blank^,normalput); end;

if x<35 then begin x:=570; putimage(35,229,blank^,normalput); end;

until (r=Q)or(perdu=true)or(repas>214);

if repas>214 then begin

cleardevice;

outtextxy(220,30,Prepare to next level);

while not(keypressed) do begin

delay(d500*2);

putimage(x,y,p2^.im,normalput);

p2:=p2^.nxt;

end;

if son=true then begin

for i:=1 to 3 do begin

sound(2000);

delay(300);

nosound;

delay(d500);

end;

sound(2000);

delay(d500);

nosound;

end;

end;

until (perdu=true)or(r=Q);

repeat

for j:=1 to 25 do begin

for k:=1 to 2 do begin

if k=1 then setcolor(4) else setcolor(0);

outtextxy(290-3*j,20,L);

outtextxy(300-j,20,o);

outtextxy(310+j,20,s);

outtextxy(320+3*j,20,t);

if k=1 then delay(d500);

end;

end;

for j:=25 downto 1 do begin

for k:=1 to 2 do begin

if (k=1) then setcolor(4) else setcolor(0);

outtextxy(290-3*j,20,L);

outtextxy(300-j,20,o);

outtextxy(310+j,20,s);

outtextxy(320+3*j,20,t);

if k=1 then delay(d500);

end;

end;

until keypressed;

closegraph;

end.

Приложение 2. Скриншоты работы программы



Рис.П.1.1 «Игровой процесс»



Рис.П.1.2 «Меню»

1