Разработка игрового приложения на языке PascalABC.NET - Программирование, компьютеры и кибернетика курсовая работа

Разработка игрового приложения на языке PascalABC.NET - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Разработка игрового приложения на языке PascalABC.NET

Разработка компьютерных игр как зрелищная и наиболее сложная отрасль программирования. Рассмотрение основных особенностей конструирования классов CGame и Players, а также алгоритмов вычисления траектории полета снаряда. Анализ алгоритма PassivePlayer.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
компьютерный игра программирование алгоритм
Объектом исследования является применение объектно-ориентированного программирования для создания игрового приложения.
Цель работы - разработка игрового приложения на языке PascalABC.NET программная реализация игры «2 башни».
В работе рассматриваются теоретические и практические вопросы реализации игрового цикла, управление графическими объектами через события, приведены алгоритмы и структуры классов реализации игры.
В результате проделанной работы были сконструированы классы CGame и Players, а также алгоритмы вычисления траектории полета снаряда, перемещения индикатора силы и угла, позволяющие пользователю взаимодействовать с игровым полем.
Разработка компьютерных игр - самая зрелищная и в то же время самая сложная отрасль программирования. В ней сочетается все, что наработано годами в области разработки программных продуктов, и в то же время используются последние технологические наработки в базах данных, средствах разработки, компьютерной графике, web-технологиях и многих других отраслях.
Актуальность темы моей работы определяется в первую очередь, спросом игр данного жанра. Например, известная игра Worms (червячки) вышедшая в 1994 году, либо Angry Birds (злые птицы), которую на данный момент скачали более 1 миллиарда раз, что делает самым скачиваемым приложением для мобильных платформ, таких как iOS и Android.
Данный тип игр подкупает, хорошо продуманной физикой, удобным и простым ненавязчивым интерфейсом, возможностью играть нескольким пользователям одновременно (в Worms).
Выполнение работы требует творческого подхода и применения дополнительных знаний из области графики. Курсовой проект не предполагает дальнейшего коммерческого использования данного программного продукта.
Одной из прикладных сфер программирования является создание компьютерных игр.
В качестве анализируемого источника была найдена реализация подобной игры на языке Pascal ABC[1]. На рисунке 1 представлено игровое поле, которое состоит из нескольких частей: два атакующих друг друга персонажа, жилые дома, имена игроков, заданный угол полета и скорость.
При старте игры создается карта из жилых домов, представляющие собой графические примитивы. При каждом рестарте игры, карта создается разная. Объекты персонажей перемещаться не могут. Траектория полета снаряда рассчитывается по аналогичной баллистической формуле. Угол полета и скорость задается игроком с клавиатуры, при этом графически не видно, куда примерно полетит снаряд, что не совсем удачно. При попадании снаряда в персонажа, образуется прозрачная окружность. Победителем считается игрок, набравший наибольшее количество очков. Очко засчитывается, если снаряд попал в противоположного игрока. В качестве структуры отвечающей за вычисление траектории полета используется процедура BallTrack, которой передаются 2 параметра вводимые с клавиатуры: угол и скорость полета. За прорисовку домов отвечает процедура DrawHouse. Ширина домов вычисляется процедурой Width, ей в качестве параметра передается количество домов. Высота домов не может быть больше половины игрового окна. Проверка столкновения с персонажем проверяется процедурой Collision. Процедура PNames выводит имена игроков на экран.
Целью данной работы является программная реализация игры «2 башни».
Для реализации поставленной цели необходимо выполнить следующие задачи:
1. создать графическое окно, которое будет являться игровым полем;
2. создать игровые объекты, такие как: 2 башни, ядро, индикатор силы, угол наклона;
3. разработать метод определяющий траекторию полета ядра, в зависимости от скорости и угла;
4. управлять графическими объектами через события;
5. создать метод определяющий количество жизней каждой из башен и меняющий изображение башни в зависимости от уровня жизней;
7. разработать меню, включающее: начать, рестарт и закончить игру.
А лгоритмическое конструирование
В ходе работы были разработаны алгоритмы: Physics, ActivePlayer, PassivePlayer, Seconds, GameInit, RestartGame, GameOver.
Когда пользователь запускает программу, в графическом отображается главный экран, представляющий из себя основное меню игры. Кнопка «Начать» запускает игру, кнопка «Выход» соответственно покинуть игру.
Алгоритм Physics определяет траекторию полета снаряда, зависящую от скорости и угла. Вычисляет координаты: x и y, на которые перемещается объект снаряда, что графически воспринимается как полет. Алгоритм задействуется после нажатия клавиши «Enter», что означает собой выстрел из орудия. По нажатию клавиш «стрелка вправо» или «стрелка влево», определяется скорость полета снаряда. По нажатию клавиш «стрелка вверх» или «стрелка вниз» определяется угол наклона.
Также алгоритм Physics проверяет попадание снаряда в башню противоположного игрока.
Алгоритм ActivePlayer запускается каждый раз, когда меняется ход игрока. При этом таймер хода инициализируется заново, на экран выводится имя игрока совершающий ход, индикатор силы и угла располагаются в начальные положения.
Алгоритм Seconds отсчитывает оставшееся время на ход и выводит на экран.
Алгоритм GameInit делает видимыми графические элементы: 2 башни, ядро, индикаторы силы и угла, количество жизней в центр башен, имя игроков. Запускает основной игровой цикл, в котором поочередно определяется ход игрока, четное число - ход первого игрока, не четное - второго.
Алгоритм PassevePlayer определяет пассивного игрока, чей ход будет следующим.
Алгоритм RestartGame перезагружает игру, возвращая уровень жизни башен и время на ход в прежнее состояние. При этом скрывается поздравление победителя прошлой игры, если такой был.
Алгоритм GameOver вызывается, если количество жизней одной из башен равно нулю. При этом останавливается игровой таймер и показывается поздравление победителя с его именем.
П рограммное конструирование. Описание типов
В ходе работы были разработаны классы, связь классов показана на рисунке 9
Класс CGame представленный в таблице 1, содержит методы расчета траектории полета снаряда, определение текущего и пассивного игрока, игровой таймер, а также инициализатор, перезагрузку и завершение игры.
Таблица 1 - таблица методов класса CGame
Определяет в цикле, с помощью физической формулы, координаты x,y, учитывая переданные ему аргументы v0 - скорость и Angle - угол. В этом же цикле происходит переем. снаряда на x,y, а также проверка состояния здоровья башни при попад. и проверка вылета снаряда за пределы экрана.
Метод определяет актив. игрока. Объект ActPlayer получает объект игрока, ход которого сейчас должен быть. останав. таймер хода (если он был запущен ранее) и включается заного. Задается нач. угол полета на 90*, нач. скорость на 0.
Метод определяет не активного игрока. Объект PasPlayer получает объект игрока, ход которого сейчас не должен быть.
Метод отсчитывает, сколько секунд имеется на ход. При этом, если время вышло, то игровой счетчик увеличивается на 1 ед., а поле StepStatus принимает TRUE, что позволяет передать ход следующему игроку.
Метод инициализирует игровой цикл, где каждую секунду проверяется возможность хода следующему игроку. Если игровой счетчик четное число, то ход предоставляется первому игроку, иначе второму. Также метод выводит на экран графические объекты, уровень жизни и имена игроков.
Метод восстан. уровень здоровья, время на ход и изначальное граф. Изображ. башен (т.к. они могут быть повреждены).
Останавливает игровой таймер, выводит на экран имя победителя.
Класс Players представленный в таблице 2, содержит методы задания имени, жизней и цвета игрока.
Таблица №2 - таблица методов класса Players
Задает уровень жизни игрока переданный в качестве аргумента.
Задает определенный (не изменяемый) уровень здоровья для игрока.
При запуске игры пользователю предлагается начать игру или выйти.
После нажатия кнопки «начать», можно наблюдать появление графических объектов, таких как: 2 башни, информационное табло с именем игрока, кто должен атаковать, время выделяемое на ход, 2 индикатора силы, необходимые для задания скорости полета снаряда и 2 кнопки: рестарт - перезагрузить игру и выход. Имя игрока пишется на индикаторе силы. Количество жизней башни отображается на ней же.
На рисунке 10 и 11 показано, изменения угла орудия. Угол меняется на левую и правую стрелку, на клавиатуре.
На рисунке 11 и 12 показан индикатор скорости полета снаряда. Увеличение скорости происходит по нажатию «стрелки вверх», уменьшение «стрелки вниз», на клавиатуре.
Запуск снаряда производится на клавишу Enter. Также в зависимости от количества жизней башни, отображается соответствующая картинка с трещинами разрушения. Рисунок 13 и 14 наглядно это демонстрирует.
После победы одного из игроков, на экран выводится поздравление. Для возможности игры заново, необходимо нажать кнопку рестарт.
С писок использованных источников
1.Информационный ресурс о играх. URL: http://www.kongregate.com/games/Moly/gorillas-bas
2.Сайт факультета математики, механики и компьютерных наук Южного федерального университета. URL: http://pascalabc.net/
3.Материал из Википедии, свободной энциклопедии. URL: http://ru.wikipedia.org/wiki/Worms
4.Материал из Википедии, свободной энциклопедии. URL: http://ru.wikipedia.org/wiki/Angry_Birds
5.Материал из Википедии, свободной энциклопедии. URL: http://ru.wikipedia.org/wiki/Баллистика
Тексты основных программных модулей
g = 9.81; { гравитационная постоянная }
pi = 3.14; { математическая константа }
time_step = 41; { время хода в секундах }
X,Y: integer; { расположение башен }
Power_x: integer; { расположение индикатора силы по Х }
Color: System.Drawing.Color; { цвет игрока }
constructor Create(x,y: integer; fname: string);
procedure SetColor(Color: System.Drawing.Color);
property PName: string read Name write SetName;
property PLife: integer read Life write SetLife;
property PColor: System.Drawing.Color read Color write SetColor;
Angle, Speed, EventEnable, Sec, Counter: integer;
Ball, MenuBG, InfoStep, InfoTime, InfoNameP1, InfoNameP2, PowerP1, PowerP2, RightBG, LeftBG, Celebration: PictureABC;
ButtonStart, ButtonExit, ButtonRestart: PictureABC;
Player1, Player2, ActPlayer, PasPlayer: Players;
MenuBG := new PictureABC(0, 0, 'models\bg.png');
Player1 := new Players(0, 580, 'models\original_tower.png');
Player2 := new Players(880, 580, 'models\original_tower.png');
TDisplay := new Timer(1000, Seconds);
Ball := new PictureABC(window_x, window_y, 'models\core_2.png');
InfoStep := new PictureABC(window_x div 2 - 150, 20, 'models\step.png');
InfoTime := new PictureABC(window_x div 2 - 60, window_y - 620, 'models\form_button.png');
PowerP1 := new PictureABC(Player1.X+Player1.Power_x-3, Player1.Y+60, 'models\power3.png');
PowerP2 := new PictureABC(Player2.X+Player2.Power_x-3, Player2.Y+60, 'models\power3.png');
RightBG := new PictureABC(Player2.x, Player2.y-50, 'models\right_bg.png');
LeftBG := new PictureABC(Player1.x, Player2.y-50, 'models\left_bg2.png');
Celebration := new PictureABC((window_x div 2) - 200 , window_y div 3, 'models\celebration.png');
ButtonStart := new PictureABC((window_x div 2) - 80, window_y div 3, 'models\button_start.png');
ButtonExit := new PictureABC((window_x div 2) - 80, (window_y div 3)+50, 'models\button_exit1.png');
ButtonRestart := new PictureABC(20, 10, 'models\button_restart.png');
{ Метод определяет координаты полета снаряда }
procedure Physics(v0, angle: real);
y := ActPlayer.y-round(5*(v0*sin(Angle*pi/180)*t-g*t*t/2));
x := 50+ActPlayer.x+round(5*(v0*cos(Angle*pi/180)*t));
if PasPlayer.Intersect(Ball) then begin
if PasPlayer.Life < 100 then ChangeTower;
{ Метод определяет активного игрока }
procedure ActivePlayer(player: Players);
EventEnable := 1; { Если равно 1, то разрешно одно нажатие на Enter }
Angle := 90; { Задаем начальный угол }
{ Метод определяет кто является не активны игроком }
procedure PassivePlayer(player: Players);
{ Таймер отсчитывает сколько имеется секунд на ход }
InfoTime.FontColor := ActPlayer.Color;
InfoTime.Text := '00:' + sub_nil + Sec.ToString;
Player1.ChangePicture('models\original_tower.png');
Player2.ChangePicture('models\original_tower.png');
Celebration.Text := ActPlayer.Name + ' одержал победу!';
{ Метод вывод на экран ход текущего игрока }
InfoStep.FontColor := ActPlayer.Color;
InfoStep.Text := 'Ход игрока: ' + ActPlayer.Name;
Player1.Text := Player1.Life.ToString;
Player2.Text := Player2.Life.ToString;
PowerP1.FontColor := Player1.Color;
PowerP2.FontColor := Player2.Color;
{ Метод меняет изображение башни в зависимости от уроня HP }
if (PasPlayer.Life > 90) and (PasPlayer.Life < 100) then PasPlayer.ChangePicture('models\tower_crack\1.png')
else if PasPlayer.Life > 80 then PasPlayer.ChangePicture('models\tower_crack\2.png')
else if PasPlayer.Life > 70 then PasPlayer.ChangePicture('models\tower_crack\3.png')
else if PasPlayer.Life > 60 then PasPlayer.ChangePicture('models\tower_crack\4.png')
else if PasPlayer.Life > 50 then PasPlayer.ChangePicture('models\tower_crack\5.png')
else if PasPlayer.Life > 40 then PasPlayer.ChangePicture('models\tower_crack\6.png')
else if PasPlayer.Life > 30 then PasPlayer.ChangePicture('models\tower_crack\7.png')
else if PasPlayer.Life > 20 then PasPlayer.ChangePicture('models\tower_crack\8.png')
else if PasPlayer.Life > 10 then PasPlayer.ChangePicture('models\tower_crack\9.png')
else if PasPlayer.Life > 0 then PasPlayer.ChangePicture('models\tower_crack\10.png');
if InfoTime.Visible = TRUE then InfoTime.Visible := FALSE;
if InfoStep.Visible = TRUE then InfoStep.Visible := FALSE;
if Player1.Visible = TRUE then Player1.Visible := FALSE;
if Player2.Visible = TRUE then Player2.Visible := FALSE;
if PowerP1.Visible = TRUE then PowerP1.Visible := FALSE;
if PowerP2.Visible = TRUE then PowerP2.Visible := FALSE;
if Celebration.Visible = TRUE then Celebration.Visible := FALSE;
if InfoTime.Visible = FALSE then InfoTime.Visible := TRUE;
if InfoStep.Visible = FALSE then InfoStep.Visible := TRUE;
if Player1.Visible = FALSE then Player1.Visible := TRUE;
if Player2.Visible = FALSE then Player2.Visible := TRUE;
if PowerP1.Visible = FALSE then PowerP1.Visible := TRUE;
if PowerP2.Visible = FALSE then PowerP2.Visible := TRUE;
line(50+ActPlayer.x, ActPlayer.y, 50+ActPlayer.x+Round(50*cos((0+Angle)*pi/180)), ActPlayer.y-Round(50*sin((0+Angle)*pi/180)));
line(50+ActPlayer.x, ActPlayer.y, 50+ActPlayer.x+Round(50*cos((0+Angle)*pi/180)), ActPlayer.y-Round(50*sin((0+Angle)*pi/180)));
line(ActPlayer.X+ActPlayer.Power_x+Speed, ActPlayer.Y+80, ActPlayer.X+ActPlayer.Power_x+Speed, ActPlayer.y+62);
line(ActPlayer.X+ActPlayer.Power_x+Speed, ActPlayer.Y+80, ActPlayer.X+ActPlayer.Power_x+Speed, ActPlayer.y+62);
procedure Mouse (x,y,mousebutton: integer);
if ButtonStart.PtInside(x, y) then begin
if ButtonExit.PtInside(x, y) then begin
if ButtonRestart.PtInside(x, y) then begin
while Game.Start <> TRUE do sleep(500);
Техническое задание по ГОСТ 19.201-78 ЕСПД
Разработка проводится на основании:
задания на курсовой проект по специальности 231000 «Программная Инженерия» факультета «Информатика и вычислительная техника» Донского государственного технического университета;
задания на программную реализацию игры, данного Слоновским Алексеем Владимировичем.
Тема курсового проекта: Программная реализация игры «2 башни».
Предоставление пользователю возможности электронного прохождения игры «2 башни».
Программное средство предназначено для функционирования на рабочих станциях конечных пользователей в качестве приложения.
Б4. Требования к программе или программному изделию
Программное изделие должно состоять из одной программы:
программа «2 башни» - программа моделирующая игру 2 башни;
использование небольшого объема оперативной памяти компьютера;
возможность использования ПП на любой версии MS Windows, начиная с версии 2000;
удобный и интуитивно понятный интерфейс приложения.
Б4.1. Требования к функциональным характеристикам
Игра «2 башни» должна обеспечивать возможность выполнения перечисленных ниже функций:
функция графического вывода на экран;
функция управления скоростью атаки;
Вывод на экран графического отображения всех объектов игрового процесса .
Б4.2.1. Климатические условия эксплуатации
Климатические условия эксплуатации, при которых должны обеспечиваться заданные характеристики, должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации.
Б4.2.2. Требования к видам обслуживания
Программное средство не требует проведения каких-либо видов обслуживания.
Б4.2.3 Требования к численности и квалификации персонала
Необходима 1 штатная единица-опертор.
Б4.2.4 Требования к составу и параметрам технических средств
В состав технических средств должен входить IBM-совместимый персональный компьютер (ПЭВМ), включающий в себя:
процессор Pentium-3 с тактовой частотой не менее 1 ГГц;
оперативную память объемом не менее 512 Мб;
жесткий диск со скорость не менее 5400 об/мин и свободным местом не менее 100Мб;
монитор с разрешением не менее 800x600 пикселей;
Б4.3. Требования к маркировке и упаковке
Программа поставляется в виде программного изделия - на дистрибутивном (внешнем оптическом) носителе (компакт-диске).
Требования к маркировке программного изделия не предъявляются.
Упаковка программного изделия должна осуществляться согласно требованиям предприятия-изготовителя носителя информации.
Б4.4. Требования к транспортированию и хранению
Допускается транспортирование программного изделия в транспортной таре всеми видами транспорта.
При транспортировании и хранении программного изделия должна быть предусмотрена защита от попадания пыли и атмосферных осадков. Не допускается кантование программного изделия.
Климатические условия транспортирования должны соответствовать требованиям, предъявляемым предприятием-изготовителем к носителю информации с программным изделием.
Б5. Требования к программной документации
Программная документация должна содержать:
тексты основных программных модулей;
техническое задание (по ГОСТ 19.201-78).
Разработка программного средства включает в себя следующие этапы:
Разработка программного средства осуществляется одним человеком в период с ноября по декабрь 2012 года.
Порядок и контроль приёмки определяются преподавателем «ПОВТ и АС» и основаны на демонстрации знаний технологии и умении создавать программные средства для различных предметных областей. Главным требованием к приему является наличие корректно работающей программы и отчета, представленного в печатном виде.
Б8. Приложение к техническому заданию. Обоснование выбора технологии
Для реализации программного средства выбрано приложение PascalABC.NET, в связи с его использованием в процессе обучения.
Разработчик студент группы ВПР 22 Голиков Иван /_______/ 27.12.2012
Разработка и написание программы по моделированию движения снаряда при заданных параметрах пути, максимальной высоты, времени полета и траектории. Анализ методов построения модели, разработка алгоритма, написание и отладка программы в среде Delphi. курсовая работа [214,5 K], добавлен 11.02.2011
Динамика движения материальной точки. Разработка программы, моделирующей траектории полета снаряда при стрельбе из пушки под заданным углом к горизонту. Ее структурная схема, системные требования к ней. Создание приложения в среде Borland C++Builder. курсовая работа [3,2 M], добавлен 10.06.2014
Изучение существующих подходов к использованию компьютерных игр в образовательном процессе. Разработка и реализация проекта игрового обучающего приложения на мобильной платформе. Выбор платформы и средств реализации игрового обучающего приложения. дипломная работа [3,4 M], добавлен 12.08.2017
Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика. дипломная работа [1,5 M], добавлен 09.11.2016
Подбор игрового движка и описание его основных характеристик. Разработка структуры, алгоритма и интерфейса программы. Проектирование иерархии классов. Выделение типового приема визуализации. Тестирование правильности работы программного обеспечения. курсовая работа [3,1 M], добавлен 19.01.2017
Разработка и анализ алгоритмов с использованием электронных таблиц и прикладных программ Smath Studio, Microsoft Excel. Проверка алгоритма ветвления или выбора. Реализация циклов на примере вычисления определённого интеграла с заданной точностью. контрольная работа [1,0 M], добавлен 19.03.2016
Движение управляемого снаряда (по продольному каналу) под действием порохового ускорителя и описанием с помощью системы дифференциальных уравнений второго порядка. Разработка алгоритма расчета фазовой траектории управляемого процесса в программе. контрольная работа [394,1 K], добавлен 09.06.2013
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Разработка игрового приложения на языке PascalABC.NET курсовая работа. Программирование, компьютеры и кибернетика.
Источники В Курсовой Работе По Госту
Реферат: Искусство эффективного управления
Осенняя Пора Сочинение 7 Класс
Реферат: ОВД
Доклад по теме Музичний керівник: нова формація
Доклад: Трихомониаз. Лечение трихомониаза.
Жизнь Мертвых В Памяти Живых Сочинение
Реферат: Flanner O
Шпаргалки: Травматология.
Реферат: Немецкий язык предложения части речи
Курсовая работа: Инвестиционная деятельность на примере предприятия ООО "Форсаж"
План Сочинения Моя Школа 4 Класс
Реферат: Исполнитель: Коновалова О. С
Практическая Квалификационная Работа По Профессии Санитар Скачать
Стратегия Финансового Роста Предприятия Реферат
Реферат по теме Александр Пушкин
Курсовая Работа На Тему Правовідносини Батьків Та Дітей
Сочинение По Творчеству Чехова Вишневый Сад
Классификация способов бурения. Их сущность и область применения.
Моя Судьба В Моих Руках Сочинение
Факторы риска кардиоваскулярной патологии у детей, подходы к профилактике - Медицина презентация
Маркетинговий аналіз діяльності гіпермаркету "Вена" - Маркетинг, реклама и торговля курсовая работа
Передача данных. Мобильные телекоммуникации - Коммуникации, связь, цифровые приборы и радиоэлектроника реферат


Report Page