Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Введение; Аналитическая часть Описание и постановка задачи Назначение и цель создания.html

Работа добавлена на сайт samzan.net: 2016-01-17

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.5.2024

Титульный лист (специальный бланк);

Лист задания (специальный бланк)

Содержание;

Введение;

  1.  Аналитическая часть
    1.  Описание и постановка задачи
    2.  Назначение и цель создания
    3.  Описание правил игры
    4.  Общая концепция разработки приложения
    5.  Разработка архитектуры приложения
    6.  Разработка схем алгоритмов приложения
    7.  Обоснование выбора инструментальных средств
  2.  Технологическая часть
    1.  Описание системных требований
    2.  Описание пользовательского интерфейса
    3.  Реализация алгоритмов приложения
    4.  Руководство к использованию и эксплуатации
    5.  Результаты экспериментальной проверки

Заключение;

Список литературы;

Приложение А Схемы алгоритмов

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

1 Заголовок

1.1     «Эпирский лучник»

В рамках курсового проектирования мне было предложено разработать приложение, реализующее игру. В игре должны присутствовать элементы объектно-ориентированного проектирования, то есть должны быть применены объекты.

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

Мне очень фильм «Война богов». Она про времена до нашей эры мировой войны, про лук который освободил титанов (сломав им клетку) и началась война богов против титанов.

По мифам древних греков Эпирский лук был оружием богов, его выковал Арес (бог войны).

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

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

По мотивам сюжета фильма «Война богов» мной был написан сценарий игры «Эпирский лучник».

Юноша Тесей простой крестьянин, живёт с матерью в деревушке на берегу моря. Он храбр и мужественен; его наставник, местный старик, обучил Тесея владению мечом и копьём. Мать Тесея посещает местный храм, однако Тесей не очень верит в богов. Тем временем деспотичный и властный царь Гиперион объявляет богам войну за то, что они позволили умереть его семье: он хочет отыскать Эпирский Лук, сделанный руками бога войны Ареса, и освободить титанов от тысячелетнего заточения в горах Тартара. Войско Гипериона постепенно завоёвывает Элладу, в одном из храмов которой должен храниться лук.

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

Город Тесею пришлось защищаться от  Титанов , их было больше и больше и они были сильнее и сильней.10 волн ужасных титанов нужно будет одолеть Тесею ради спасения своего народа.

1.2 Игра про Тесея или же Эпирского лучника. Выполнена в двух жанрах можно классифицировать как аркада или Survival. В данном случае игра более подходит под жанр Survival.

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

В мировой практике, а также в российской прессе, аркадами называются игры для aркaдных игровых автоматов. Это не отдельный жанр игр, а скорее игровое направление. Компьютерная игра называется «аркадной» в том случае, если она напрямую портирована с автомата или же схожа по концепции с играми для автоматов. Например, к аркадным играм относятся все проекты жанров «файтинг» (fighting), часть игр жанра «гонки» (racing), часть игр жанра «шутер» (shooter). К ним никогда не относятся ролевые игры, симуляторы (кроме т. н. «танцевальных симуляторов»), стратегии.

Survival ( примерно рус. выживание жанр компьютерных игр, появившийся в начале и сформировавшийся к концу 1990-х годов. Игры этого жанра содержат в себе различные специфические составляющие, главной целью которых является нагнетание, подобно литературе ужасов и фильмам ужасов, атмосферы страха и тревоги. Хотя, подобно играм жанров action, action-adventure и 3D-шутера, survival часто включает в себя бои и уничтожение противников, эта часть игрового процесса сильно затруднена из-за нехватки боеприпасов, низкого здоровья, скорости игрового персонажа или других ограничений. Как правило, survival  предлагает игроку пробираться через пугающие лабиринтообразные виртуальные миры, разыскивая способы продвинуться дальше и подвергаясь неожиданным нападениям врагов или просто выжить.

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

   Главной задачей игры является защитить свой город от Титанов.

Тесей со спутниками следуют за Гиперионом, однако солдаты царя разоружают их и отнимают Эпирский Лук, который передают Гипериону. Гиперион предлагает Тесею перейти на его сторону, но тот отказывается и поднимает эллинов на бой с огромным войском Гипериона. Во время боя Гиперион при помощи лука освобождает титанов, которые вступают в

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

1.3 Тесей может ходить в 2 стороны право и влево, управление стрелочками, при нажатии на пробел, он выпускает стрелу.

Стрела летит вверх, поражая врагов.

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

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

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

     1.4 Концепция игры «Эпирский лучник»

 

      Игра объектно-ориентированная. В данной игре используется ABCObjects, модуль ABCPascal. В игре отображаемое на экране является объектами, которые различным способом взаимодействуют между собой.

 Например:

               Тесей (как объект Pictureabc) перемещается по нажатию на стрелочек. При нажатии на пробел будут появляться стрелы (объект Pictureabc).  Если стрела пересечется с врагом, то последний будет уничтожен.

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

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

Таблица рекордов:

Буквы PictureABC, которая как объект может применять свойство  PTinside.

Которая при наличии процедуры Mouse Down может считывать был ли клик по объекту и при получении TRUE или False можно выполнять различные действия.

Сама таблица создана из выше упомянутых rectangle(так называемых прямоугольников).

            Боты: Все 10 видов . Это тоже объекты. Они двигаются благодаря таймерам, в зависимости от показаний таймера происходит движение, также в нем проверяется уничтожение скрытие и прочие события которые могут произойти  программе .

1.5 Модуль Timers используется для движения ботов. Также Timers используется для некоторых проверок определённых условий таких как проверка кол-ва жизней , подсчет очков . А также через Timers работает для проверки создания и уничтожения ботов .

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

Модуль ABCObjects самый основой модуль в игре, благодаря ему в игре создаются все объекты, персонажи карты предметы и т.д. Благодаря тому что объекты модуля ABCObjects обладают свойством Visible, Destroy создаются, удаляются, скрываются боты. При нажатии паузы объекты используемые в игре как боты, фон, герой, и.т.д  исчезать с экрана  . Очки жизни ,  меню, таблица рекордов, создаётся благодаря модулю ABCObjects

GraphABC этот модуль необходим для того чтобы окно было растянуто на нужное расширение (1024,768), и по умолчанию располагалось на экране в нужном место.

1.6 Описание алгоритмов блок схем

1.7 

Мной была выбрана среда Pascal ABC, так как она предоставляет весь необходимый инструментарий для реализации функций приложения, разрабатываемого в рамках курсового проектирования. Язык  Pascal понятен и очень удобен, данную среду часто используют для обучения. В среде Pascal можно создавать различные объекты.

Pascal ABC — современная программа для программирования сочетающая в себе всю прелесть и простоту языка паскаля и безграничные возможности платформы .NET.

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

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

2 Технологическая часть

2.1 Системные требования

Обязательные:

Наличие среды PascalABC.

Windows 95/98/ME/2000/XP/2003/Vista/2008/7/2008 R2.

Клавиатура, мышь, монитор.

Рекомендуемые:

Наличие среды PascalABC.

Windows XP/Vista/2008/7/2008 R2.

Клавиатура, мышь, монитор

4 Гб ОЗУ

процессор Dual Core

2.2 Пользовательский интерфейс.

Меню визуально понятно, выбор пункта меню происходит нажатием левой кнопки мыши на соответствующую картинку в меню. В изменения в настройках происходит нажатием Клавиш  q,w,e,r.

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

Враги могут ходить вправо, влево и вниз. Враги двигаются сверху вниз. Однако некоторые враги также могут совершать движения в стороны (вправо и влево).

При проигрыше или победе выводиться  Окно ввода рекордов.

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

После ввода вашего рекорда таблица рекордов автоматически обновиться.

2.3 Реализация алгоритмов приложения

Изначально вызывается конструктор для фоновой картинки. Далее создаются прямоугольники (rectangleabc). По нажатию на эти прямоугольники происходит вызов процедур, которые обеспечивают начало игры и выход. Вызов этих процедур реализован посредством модуля Events, создан обработчик события мыши. Для вызова процедуры–обработчика нажатия кнопки мыши используется процедура   PTinside которая проверяет, попадает ли точка с координатами x, y в границы заданного объекта.

Далее создаться  фон (PictureAbc). Лучник тоже является объектом (PictureAbc), для которой реализована процедура движения по средствам модуля Events, с помощью функции KeyDown  которая проверяет нажатую клавишу на клавиатуре и считывает ее.  Приложение (Приложение 1.6,Рис 3)

Также  создается область для отображения текущего уровня, текущего кол-ва жизней и набранных очков. Данные объекты это прямоугольники (rectangleabc), которые содержат текст. Так же создаются боты как объект-картинка. Каждый бот  имеет уникальную скорость и тип движения: вниз, вправо-влево.

Движение ботов реализовано с использованием механизма таймера. В таймере выполняется алгоритм движения ботов (Приложение 1.6 рисунок 3),

Стрела создается при нажатии  на пробела,  более подробно (Приложение 1,6 рис.6).После уничтожения всех ботов на уровне, увеличивается значение уровня и вызывается следующая волна ботов. Если вы пропустите более 3 х врагов вы проиграете, уничтожаться враги, стрелы, и лучник с помощью процедуры Destroy.  Смотрите (Приложение 1,6 Рис.2).  

После прохождения игры или проигрыша далее.

На экран выведется таблица рекордов представляющая собой Фоновою картинку  на которую создаться  символы (Pictureabc)  который использую процедуру Ptinside, которая проверяет, попадает ли точка с координатами x, y в границы заданного объекта .После нажатии клавиши ввода данные записываються в файл и выводяться в прямоугольниках таблицы.

 

2.4 Руководство к использованию и эксплуатации

После запуска игры на экране появляется рабочее окно. В этом рабочем окне отображается меню (см. рис. 2.1)

Выберите пункт новая игра для начала новой игры.

В игре управление происходит стрелочками. Стрелка на клавиатуре в вправо — движение Тесея в вправо, стрелка влево — движение Тесея в влево.

Выстреливает Тесей при нажатии пробела.

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

После чего вам предстоит уничтожить врагов  которые стремительно идут на вас.

Что уничтожить врагов вам нужно создать стрелы которые уничтожат ваших врагов.

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

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

При прохождению игры или проигрышу на экране всплывет таблица рекордов.

Где вы должны набрать своё имя или псевдоним, при нажатии на символ данный символ записывается в строку, где вы можете добавить символы или наоборот удалить их при нажатии на delete (или красный крестик).

Команды в игре.

Q-увеличить скорость ботов, Тесея(данная команда сработает только на следующеем уровне).

W-уменьшить скорость ботов, Тесея(данная команда сработает только на следующеем уровне).

E-пауза

R-снять паузу

  1.      При тестировании данного программного продукта какихөлибо отклонений от поставленной цели не наблюдалось. В целом программа готова к эксплуатации. В результате тестирования в программе не было выявлено к эксплуатации. В результате тестирования в программе не было выявлено никаких ошибок. Программа работает нормально и без сбоев.

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

uses ABCObjects, Events, Timers,graphabc;

type af1 = record

name:string;

schet12:integer;

end;

var  archer,fon,b1,nachalo,n15:PictureABC;

n1,n2,n,nkam,n3,n5:array [1..100] of pictureabc ;

n1_t,n2_t,n_f,n_t,n3_t,n5_t:array [1..100] of byte ;

menu1,z,gmpicture,nboss,g1,g2,g3,g4,g5,g6,g7,g8:pictureabc;

t,i,ch,ch1,ff, j,j1,bred,a1,kor,kam,t1,k,gm,lvl,schet,lives,c1,speed: integer;

l1:MULTIpictureABC;

f:file of af1;

stroka:string;  f1:text;

b:array[1..101] of af1;  do 11

a:af1;

ng,ob,ob1,ob2,gameover,p555,p,p1,p2,b11,b22,recordi1,recordi2,recordi3,recordi4,recordi5,recordi6,recordi7,recordi8,recordi9,recordi10:rectangleabc;

recordochki1,recordochki2,recordochki3,recordochki4,recordochki5,recordochki6,recordochki7,recordochki8,recordochki9,recordochki10:rectangleabc;

aa,ab,ac,ad,ae,af,ag,aj1,ah,ai,a2,ak,al,am,an,ao,ap,aq,ar,as1,at,au,av,aw,ax,ay,az,pauza,astrelka,avivod,fon2,pictureochki,aproblem,adelete,apredstavtes,picturename:pictureabc;

procedure  menu; forward;

procedure level1;

procedure  strela; forward;

procedure vragi1; forward;

procedure vragi2; forward;

procedure vragi4; forward;

procedure vragi1lvl2; forward;

procedure vragi1lvl3; forward;

procedure vragi1lvl4; forward;

procedure vragi1lvl5; forward;

procedure vragi1lvl6; forward;

procedure vragi1lvl7; forward;

procedure vragi1lvl8; forward;

procedure vragi1lvl9; forward;

procedure vragi1lvl10; forward;

procedure recordi;   forward;

 { s vragi 6 ewe}

procedure keydown(key:integer); {polet streli}

begin

case key of

VK_LEFT: archer.moveto(archer.left-5,archer.top);

VK_RIGHT: archer.moveto(archer.left+5,archer.top);

 81:  begin speed:=speed+1;writeln(speed);end; {q}

 87:  begin speed:=speed-1;writeln(speed);end; {//w}

 69:  begin stoptimer(t); stoptimer(t1);  pauza.visible:=true;    p.visible:=false; p1.visible:=false;p2.visible:=false;

 for i:= 1 to 5 do begin

if n_t[i]<>0 then    n[i].visible:=false;

 if n1_t[i]<>0 then   n1[i].visible:=false;

 if n2_t[i]<>0 then   n2[i].visible:=false;

   end; end;

 82: begin pauza.visible:=false;    starttimer(t); starttimer(t1); p.visible:=true; p1.visible:=true;p2.visible:=true;  {r}

     for i:= 1 to 5 do begin

if n_t[i]<>0 then    n[i].visible:=true;

 if n1_t[i]<>0 then   n1[i].visible:=true;

 if n2_t[i]<>0 then   n2[i].visible:=true;

end;                   end;

end;

if key = VK_SPACE then  strela;

if key = VK_UP then  StartTimer(t);

if key = VK_UP then  StartTimer(t1);

if key = vk_up then   nachalo.visible:=false;

////////////////////////////////

 end;

 

///////////////////////////////

procedure vragi1;

begin

for i:=1 to 5 do begin

ch:=ch+10;

n1[i]:=pictureabc.Create(ch,ch,'objects/vrag3.1.gif');

n1_t[i]:= random(speed)+1;  end;

end;

 

procedure vragi1lvl2;

begin

for i:=1 to 5 do begin

ch:=ch+10;

n1[i]:=pictureabc.Create(ch,ch,'objects/Stalfos1.gif');

n1_t[i]:= random(speed)+1;  end;

end;

 

 

procedure vragi1lvl3;

begin

for i:=1 to 5 do begin

ch:=ch+10;

n1[i]:=pictureabc.Create(ch,ch,'objects/DarknutMC1.gif');

n1_t[i]:= random(speed+4)+1;  end;

end;

 

procedure vragi1lvl4;

begin

for i:=1 to 5 do begin

ch:=ch+10;

n1[i]:=pictureabc.Create(ch,ch,'objects/qop1.1.bmp');

n1_t[i]:= random(speed+4)+1;  end;

end;

procedure vragi1lvl5;

begin

for i:=1 to 5 do begin

ch:=ch+10;

n2[i]:=pictureabc.Create(ch,ch,'objects/ZeldaGuard2.1.gif');

n2_t[i]:= random(speed+4)+1;  end;

end;

 

procedure vragi1lvl6;

begin

ch:=200;

for i:=1 to 5 do begin

  ch:=ch+10;

n2[i]:=pictureabc.Create(ch,50,'objects/Monster_claus1.gif');

n2_t[i]:= random(speed+2)+1;  end;

end;

 

 procedure vragi1lvl7;

begin

ch:=220;

for i:=1 to 5 do begin

  ch:=ch+20;

n2[i]:=pictureabc.Create(ch,50,'objects/ZeldaGuard3.1.gif');

n2_t[i]:= random(speed+2)+1;  end;

end;

 

 procedure vragi1lvl8;

begin

ch:=120;

for i:=1 to 5 do begin

  ch:=ch+20;

n2[i]:=pictureabc.Create(ch,50,'objects/vrag8.gif');

n2_t[i]:= random(7)+1;  end;

end;

 

 procedure vragi1lvl9;

begin

ch:=220;

for i:=1 to 5 do begin

  ch:=ch+20;

n2[i]:=pictureabc.Create(ch,50,'objects/vrag9.gif');

n2_t[i]:= random(speed+2)+1;  end;

end;

 

 procedure vragi1lvl10;

begin

ch:=200;

for i:=1 to 5 do begin

  ch:=ch+20;

n2[i]:=pictureabc.Create(ch,50,'objects/vrag10.gif');

n2_t[i]:= random(speed+2)+1;  end;

end;

 

procedure vragi4;

 begin

 Stoptimer(t);stoptimer(t1);

 ch:=100;

 for i:=1 to 5 do begin

 ch:=ch+10;

 n1[i]:=pictureabc.Create(ch,25,'objects/vrag3.1.gif');

 n1_t[i]:= random(speed+2)+1;

 end;

 

 for i:=1 to 5 do begin

 ch:=ch+10;

 n2[i]:=pictureabc.Create(ch+10,50,'objects/Stalfos1.gif');

 n2_t[i]:= random(speed+1)+1;

 end;

end;

PRocedure gameover1;

var ii:byte;

begin

for ii:=1 to 5 do begin

if n1_t[ii]<>0 then if  n1[ii].top>=windowheight  then begin lives:=lives-1; n1[ii].destroy; n1_t[ii]:=0;end;

if n2_t[ii]<>0 then if  n2[ii].top>=windowheight  then begin lives:=lives-1; n2[ii].destroy; n2_t[ii]:=0;end;

                end;

if lives=0 then begin fon.visible:=false;p1.visible:=false;

                                                      p1 .visible:=false;

                                                      p.visible:=false;

                                                      fon.visible:=false;

                                                      p2.visible:=false;

                                                     recordi;

if  lives=0 then begin

for I:=1 to 5 do begin

n1[i].moveon(500,500);

n2[i].moveon(500,500);

end;end;

stoptimer(t);  stoptimer(t1);

end;end;

procedure recordi;

begin

onkeydown:=nil;

stoptimer(t);stoptimer(t1);

archer.destroy;

fon2.visible:=true; g1.visible:=false;

for i:=1 to 5 do begin

if n_t[i]<>0 then n[i].visible:=false;

n1[i].visible:=false;

n2[i].visible:=false;

end;

apredstavtes:=PictureABC.Create(0,0,'objects\predtavtes.gif');

aA:=PictureABC.Create(10,80,'Alfavit\a.gif');

aB:=PictureABC.Create(50,80,'Alfavit\b.gif');

ac:=PictureABC.Create(90,80,'Alfavit\c.gif');

ad:=PictureABC.Create(130,80,'Alfavit\d.gif');

ae:=PictureABC.Create(170,80,'Alfavit\e.gif');

af:=PictureABC.Create(210,80,'Alfavit\f.gif');

ag:=PictureABC.Create(250,80,'Alfavit\g.gif');

ah:=PictureABC.Create(290,80,'Alfavit\h.gif');

ai:=PictureABC.Create(320,80,'Alfavit\i.gif');

aj1:=PictureABC.Create(360,80,'Alfavit\j.gif');

ak:=PictureABC.Create(400,80,'Alfavit\k.gif');

al:=PictureABC.Create(440,80,'Alfavit\l.gif');

am:=PictureABC.Create(480,80,'Alfavit\m.gif');

an:=PictureABC.Create(520,80,'Alfavit\n.gif');

adelete:=PictureABC.Create(560,80,'Alfavit\delete.gif');

ao:=PictureABC.Create(10,150,'Alfavit\o.gif');

ap:=PictureABC.Create(50,150,'Alfavit\p.gif');

aq:=PictureABC.Create(90,150,'Alfavit\q.gif');

ar:=PictureABC.Create(120,150,'Alfavit\r.gif');

as1:=PictureABC.Create(160,150,'Alfavit\s.gif');

at:=PictureABC.Create(200,150,'Alfavit\t.gif');

au :=PictureABC.Create(240,150,'Alfavit\u.gif');

av :=PictureABC.Create(280,150,'Alfavit\v.gif');

aw :=PictureABC.Create(320,150,'Alfavit\w.gif');

ax :=PictureABC.Create(360,150,'Alfavit\x.gif');

ay :=PictureABC.Create(400,150,'Alfavit\y.gif');

p555.visible:=true;

////////////////////////////////////////////////////

Pic

turename:=PictureABC.Create(600,150,'alfavit/imya.gif');

recordi1:=rectangleabc.Create(600,200,100,30);

recordi2:=rectangleabc.Create(600,230,100,30);

recordi3:=rectangleabc.Create(600,260,100,30);

recordi4:=rectangleabc.Create(600,290,100,30);

recordi5:=rectangleabc.Create(600,320,100,30);

recordi6:=rectangleabc.Create(600,350,100,30);

recordi7:=rectangleabc.Create(600,380,100,30);

recordi8:=rectangleabc.Create(600,410,100,30);

recordi9:=rectangleabc.Create(600,440,100,30);

recordi10:=rectangleabc.Create(600,470,100,30);

//////////////////////////////////////////////////

pictureochki:=PictureABC.Create(700,150,'alfavit/oschki.gif');

recordochki1:=rectangleabc.create(700,200,100,30);

recordochki2:=rectangleabc.create(700,230,100,30);

recordochki3:=rectangleabc.create(700,260,100,30);

recordochki4:=rectangleabc.create(700,290,100,30);

recordochki5:=rectangleabc.create(700,320,100,30);

recordochki6:=rectangleabc.create(700,350,100,30);

recordochki7:=rectangleabc.create(700,380,100,30);

recordochki8:=rectangleabc.create(700,410,100,30);

recordochki9:=rectangleabc.create(700,440,100,30);

recordochki10:=rectangleabc.create(700,470,100,30);

///////////////////////////////////////////////

az:=PictureABC.Create(440,150,'Alfavit\z.gif');

astrelka :=PictureABC.Create(480,150,'Objects\strelka.gif');

avivod:=PictureABC.Create(520,150,'alfavit\vvod.gif');

  aproblem:=PictureABC.Create(560,150,'alfavit\probel.gif');

 

end;//end;

procedure vragi2;

 begin

 ch:=50;

 for i:=1 to 5 do begin

 ch:=ch+30;

 n2[i]:=pictureabc.Create(ch,50,'objects/Vfartip1.gif');

 n2_t[i]:= random(2)+1;  end;  end;

 

 

procedure TimerP;

  begin

  for i:=1 to 5 do begin

  a1:=random(4)+1;

  if a1=1 then n2[i].moveon(1,1);

  if a1=2 then n2[i].moveon(1,0) else

  n2[i].moveon(0,1);

end; end;

procedure perexod;

begin

k:=0;

for i:=1 to 5 do begin

if n1_t[i]<>0 then k:=1;

if n2_T[i]<>0 then k:=1;

                           end;

if k=0 then begin lvl:=lvl+1;

           if lvl=2 then begin vragi1lvl2;exit;  end;

           if lvl=3 then begin vragi1lvl3;exit; end;

           if lvl=4 then begin vragi1lvl4;exit;  end;

           if lvl=5 then begin vragi1lvl5;exit; end;

           if lvl=6 then begin vragi1lvl6;exit;  end;

           if lvl=7 then begin vragi1lvl7;exit; end;

           if lvl=8 then begin vragi1lvl8;exit;  end;

           if lvl=9 then begin vragi1lvl9;exit;  end;

           if lvl=10 then begin vragi1lvl10;exit; end;

           if lvl=11 then begin stoptimer(t);stoptimer(t1); g1.visible:=false;

                                                      p1 .visible:=false;

                                                      p.visible:=false;

                                                      fon.visible:=false;

                                                      p2.visible:=false;

                                                      recordi;

           end; end;

end;

 

procedure viviodrecordov;

begin

  reset(f);

 writeln ('ник очки');

    while not EOF(f) do begin

    read(f,a);

    /////////////////////////////////

    recordi1.text:=b[1].name;

    recordi2.text:=b[2].name;

    recordi3.text:=b[3].name;

    recordi4.text:=b[4].name;

    recordi5.text:=b[5].name;

    recordi6.text:=b[6].name;

    recordi7.text:=b[7].name;

    recordi8.text:=b[8].name;

    recordi9.text:=b[9].name;

    recordi10.text:=b[10].name;

////////////////////////////////////////

//////////////////////////////////////

//////////////////////////////////////

///////////////////////////////////////

recordochki1.text:=inttostr(b[1].schet12);

recordochki2.text:=inttostr(b[2].schet12);

recordochki3.text:=inttostr(b[3].schet12);

recordochki4.text:=inttostr(b[4].schet12);

recordochki5.text:=inttostr(b[5].schet12);

recordochki6.text:=inttostr(b[6].schet12);

recordochki7.text:=inttostr(b[7].schet12);

recordochki8.text:=inttostr(b[8].schet12);

recordochki9.text:=inttostr(b[9].schet12);

recordochki10.text:=inttostr(b[10].schet12);

///////////////////////////////////////////////////

//////////////////////////////////////////////////

/////////////////////////////////////////////////

//////////////////////////////////////////////////

           end;

    close(f);

           end;

   

 

procedure sozdanie;

begin

reset(f); i:=1;

while not Eof(f) do begin

read(f,b[i]);

i:=i+1;

    end;

b[11].name:=stroka;

b[11].schet12:=schet;

    for i:=1 to 11 do

    for j:=1 to 10 do

       if b[j+1].schet12>b[j].schet12 then begin  a:=b[j+1]; b[j+1]:=b[j]; b[j]:=a; end;

    close(f);

    rewrite(f);

    for i:=1 to 10 do

    write(f,b[i]);

p555.text:=b[i].name;

    close(f);

end;

 

procedure MdM1(x,y,mb:integer);

begin

If  aa.PtInside(x,y)=true then begin stroka:=stroka+'a'; {writeln(stroka);} end;

If  ab.PtInside(x,y)=true then begin stroka:=stroka+'b';  end;

If  ac.PtInside(x,y)=true then begin stroka:=stroka+'c';  end;

If  ad.PtInside(x,y)=true then begin stroka:=stroka+'d';  end;

If  ae.PtInside(x,y)=true then begin stroka:=stroka+'e';  end;

If  af.PtInside(x,y)=true then begin stroka:=stroka+'f';  end;

If  ag.PtInside(x,y)=true then begin stroka:=stroka+'g';  end;

If  ah.PtInside(x,y)=true then begin stroka:=stroka+'h';  end;

If  ai.PtInside(x,y)=true then begin stroka:=stroka+'i';  end;

If aj1.PtInside(x,y)=true then begin stroka:=stroka+'j';  end;

If  ak.PtInside(x,y)=true then begin stroka:=stroka+'k';  end;

If  al.PtInside(x,y)=true then begin stroka:=stroka+'l';  end;

If  am.PtInside(x,y)=true then begin stroka:=stroka+'m';  end;

If  an.PtInside(x,y)=true then begin stroka:=stroka+'n';  end;

If  ao.PtInside(x,y)=true then begin stroka:=stroka+'o';  end;

If  ap.PtInside(x,y)=true then begin stroka:=stroka+'p';  end;

If  aq.PtInside(x,y)=true then begin stroka:=stroka+'q';  end;

If  ar.PtInside(x,y)=true then begin stroka:=stroka+'r';  end;

If as1.PtInside(x,y)=true then begin stroka:=stroka+'s';  end;

If  at.PtInside(x,y)=true then begin stroka:=stroka+'t';  end;

If  au.PtInside(x,y)=true then begin stroka:=stroka+'u';  end;

If  av.PtInside(x,y)=true then begin stroka:=stroka+'v';  end;

If  aw.PtInside(x,y)=true then begin stroka:=stroka+'w';  end;

If  ax.PtInside(x,y)=true then begin stroka:=stroka+'x';  end;

If  ay.PtInside(x,y)=true then begin stroka:=stroka+'y';  end;

if aproblem.ptinside(x,y)=true then begin stroka:=stroka+'_'; end;

If  az.PtInside(x,y)=true then begin stroka:=stroka+'z';  end;                 p555.text:=stroka;

if avivod.PtInside(X,y)=true then begin       sozdanie;  viviodrecordov;    end;

if adelete.ptinside(X,y)=true then begin delete(stroka,Length(stroka),length(stroka));   end;

////////////////

/////////////////

if  astrelka.PTInside(x,y)=true then  begin

 reset(f);

I:=1;

while not eof(f) do begin

 read(f,b[i]);

end;

write(f,b[i]);

close(f);

end;

end;

 procedure strela;

begin

i:=0;   ff:=0;

while ff = 0 do begin

  i:=i+1;

  if n_f[i] = 0 then begin n[i]:= PictureABC.Create(archer.left,archer.top,'objects/strela.Bmp'); n_f[i]:=1; ff:=1; {writeln(1); }end;

 end;

 end;

 

procedure TimerProc;

begin

for i:=1 to 10 do

if n1_t[i]<>0 then n1[i].moveon(0,n1_t[i]);

///////////////////////////////////////////////////

for i:=1 to 10 do

if n2_t[i]<>0 then n2[i].moveon(0,n2_t[i]);

{////////////////////////////////////////////////////}

for i:=1 to 10 do begin

for j:=1 to 30 do begin

if (n1_t[i]<>0)and(n_f[j]<>0) then if n[j].intersect(n1[i]) then begin n1[i].destroy; schet:=schet+1;n1_t[i]:=0; end;

end;

end;

for i:=1 to 5 do begin

for j:=1 to 30 do begin

if (n2_t[i]<>0)and(n_f[j]<>0) then if n[j].intersect(n2[i]) then begin n2[i].destroy; schet:=schet+1;n2_t[i]:=0; end;

p.text:='Очки: '+inttostr(schet);

if lives<0 then p1.text:='Вы проиграли '   else p1.text:='Жизни: '+inttostr(lives);

p2.text:='Уровень'+inttostr(lvl);

  gameover1;

end;

 end;

 

for i:= 1 to 30 do

if n_f[i] <> 0 then begin

  n[i].moveon(0,-13);

  if n[i].top< 10  then  begin n[i].destroy; n_f[i]:=0; end;

 end;

perexod;

end;

begin

SetWindowSize(1024,768);

SetWindowTop(5);

SetWindowleft(2);

t:=CreateTimer(20,TimerProc); StopTimer(t);

t1:=CreateTimer(20,TimerP); StopTimer(t1);

fon:=pictureabc.create(0,0,'objects/fon2.jpg');

fon2:=pictureabc.create(0,0,'objects/fon2.jpg');

fon2.visible:=false;

nachalo:=pictureabc.create(500,200,'objects/nachalo.png');

archer:= PictureABC.Create(560,650,'objects/1.Bmp');

g1:=PictureABC.Create(820,0,'objects/1lives.png');

pauza:=PictureABC.Create(0,0,'objects/pauza1.bmp');

pauza.visible:=false;

p1:=rectangleabc.Create(740,0,70,50,clgreen);

p:=rectangleabc.Create(950,0,70,50);

p555:=rectangleabc.Create(200,200,70,50);

p555.text:=stroka;

p555.visible:=false;

lives:=3;

p2:=rectangleabc.Create(640,0,70,50,clgreen);

vragi1;

vragi2;

OnMouseDown:=MdM1;

onKeyDown:= keydown;

end;

 

procedure  menu; forward;

 

procedure  menu; forward;

 procedure MdM(x,y,mb:integer);

begin

If Ng.PtInside(x,y)=true then level1;

Menu1.visible:=false;

Ng.destroy;

end;

procedure menu;

begin Ng:=rectangleabc.Create(230,230,250,50);

Menu1:=PictureABC.Create(0,0,'objects/Menu.bmp');{swap И видно прямоугольник}

OnMouseDown:=MdM;

end;

begin

//assign(F,'type53.txt');

assign(F,'recordi.txt');

menu;

end

1.6 Приложение А Схемы алгоритмов

Создание i-го врага

 

Рис 1.

                                                                                        

                         

Рис 2.

 

Рис 3.

                                                                                        

                               I:=1..5

 

 

Рис 4.

Проверка  до 5 раз

Рис 5.

                                                                                        

 

Рис 6.




1. Находке О Т Ч Е Т о прохождении производственной практики специальность 080105
2. тема страхования капитала Практически во всех странах запада создана система государственных гарантий и с
3.  до конца марта. Наши пожелания к кандидатам- Наличие действующего паспорта с постоянной пропиской на те
4. Расчеты предприятия с бюджетом по НДС
5. это совокупность приемов манера поведения руководителя по отношению к подчиненным позволяющая заставить
6. Т~тас ~~йма темірбетонды ~олдану ар~ылы ~ймереттерді т~р~ызу ж~ніндегі жалпы ереже
7. Запад Франции славящийся своей кухней.
8. Горячая линия по вопросам хищений и мошенничества своевременно поможет- предотвращать случаи хищений и
9. Історія цивілізації Майя
10. Учет расчетов с покупателями и заказчиками, с поставщиками и подрядчиками, прочими дебиторами и кредиторами
11. Х Ситуации Х Выгоды Если бы Х могло говорить оно бы сказало
12. варианте их применении
13. Компакт-диск
14. СОКРОВИЩА ДУНАЯ 4 дня Преимущества тура Выезды из Ужгорода каждую пятницу начиная с 17.html
15. экстрамасс доля белка должна быть не ниже 3
16. Создание и регистрация культурного фонд
17. по теме Зимушказима
18. Kendimden utn~yorum ve senden ~z~r dilemek istiyorum
19. Тема 8 Процент за кредит [1] Процент за кредит Процент за
20. Возможность развития и коррекции памяти в учебном процессе