Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

Заголовок

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.

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

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

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

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

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

Гб ОЗУ

Процессор Dual Core

 

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

После запуска программы.

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

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

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

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

Q-увеличить скорость ботов, Тесея

W-уменьшить скорость ботов, Тесея

E-пауза

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

 

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

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 Приложение А Схемы алгоритмов

 

 

       
   
 
 

 


 

 

       
   
 
 

 


 

           
   
 
 
 
   

 

 


k

Заголовок

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.

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

Гб ОЗУ

Процессор Dual Core

 

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



Поделиться:


Последнее изменение этой страницы: 2016-12-13; просмотров: 157; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.148.130 (0.012 с.)