Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Windows 95/98/ME/2000/XP/2003/Vista/2008/7/2008 R2.↑ Стр 1 из 2Следующая ⇒ Содержание книги
Поиск на нашем сайте
Заголовок 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 с.) |