Разработка компьютерных игр как зрелищная и наиболее сложная отрасль программирования. Рассмотрение основных особенностей конструирования классов CGame и Players, а также алгоритмов вычисления траектории полета снаряда. Анализ алгоритма PassivePlayer.
Угол полета и скорость задается игроком с клавиатуры, при этом графически не видно, куда примерно полетит снаряд, что не совсем удачно. Победителем считается игрок, набравший наибольшее количество очков. Кнопка «Начать» запускает игру, кнопка «Выход» соответственно покинуть игру. Алгоритм RESTARTGAME перезагружает игру, возвращая уровень жизни башен и время на ход в прежнее состояние. ACTIVEPLAYER Player: Players - Метод определяет актив. игрока.LEFTBG := new PICTUREABC(Player1.x, Player2.y-50, "models\left_bg2.png"); if PASPLAYER.Intersect(Ball) then begin if PASPLAYER.Life <1 then begin {Метод определяет активного игрока } procedure ACTIVEPLAYER(player: Players); {Метод определяет кто является не активны игроком } procedure PASSIVEPLAYER(player: Players); begin 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");Разработка проводится на основании: задания на курсовой проект по специальности 231000 «Программная Инженерия» факультета «Информатика и вычислительная техника» Донского государственного технического университета; Программное средство предназначено для функционирования на рабочих станциях конечных пользователей в качестве приложения. Программное изделие должно состоять из одной программы: программа «2 башни» - программа моделирующая игру 2 башни; Игра «2 башни» должна обеспечивать возможность выполнения перечисленных ниже функций: функция графического вывода на экран; Климатические условия эксплуатации, при которых должны обеспечиваться заданные характеристики, должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации.
Введение
Разработка компьютерных игр - самая зрелищная и в то же время самая сложная отрасль программирования. В ней сочетается все, что наработано годами в области разработки программных продуктов, и в то же время используются последние технологические наработки в базах данных, средствах разработки, компьютерной графике, 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. создать метод определяющий количество жизней каждой из башен и меняющий изображение башни в зависимости от уровня жизней;
6. создать таймер хода;
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
Метод Аргум. Возвращаемое значение Описание
Physics V0,Angle: real - Определяет в цикле, с помощью физической формулы, координаты x,y, учитывая переданные ему аргументы v0 - скорость и Angle - угол. В этом же цикле происходит переем. снаряда на x,y, а также проверка состояния здоровья башни при попад. и проверка вылета снаряда за пределы экрана.
ACTIVEPLAYER Player: Players - Метод определяет актив. игрока. Объект ACTPLAYER получает объект игрока, ход которого сейчас должен быть. останав. таймер хода (если он был запущен ранее) и включается заного. Задается нач. угол полета на 90*, нач. скорость на 0.
PASSIVEPLAYER Player: Players - Метод определяет не активного игрока. Объект PASPLAYER получает объект игрока, ход которого сейчас не должен быть.
Seconds - - Метод отсчитывает, сколько секунд имеется на ход. При этом, если время вышло, то игровой счетчик увеличивается на 1 ед., а поле STEPSTATUS принимает TRUE, что позволяет передать ход следующему игроку.
GAMEINIT - - Метод инициализирует игровой цикл, где каждую секунду проверяется возможность хода следующему игроку. Если игровой счетчик четное число, то ход предоставляется первому игроку, иначе второму. Также метод выводит на экран графические объекты, уровень жизни и имена игроков.
RESTARTGAME - - Метод восстан. уровень здоровья, время на ход и изначальное граф. Изображ. башен (т.к. они могут быть повреждены).
GAMEOVER - - Останавливает игровой таймер, выводит на экран имя победителя.
Класс Players представленный в таблице 2, содержит методы задания имени, жизней и цвета игрока.
Таблица №2 - таблица методов класса Players
Метод Аргументы Возвращаемое значение Описание
SETNAME Name: string - Задает имя игрока.
SETLIFE Life: integer - Задает уровень жизни игрока переданный в качестве аргумента.
SETCOLOR Color: System.Drawing.Color - Задает цвет имени игрока.
LIFEINIT - - Задает определенный (не изменяемый) уровень здоровья для игрока.
Контрольный пример
При запуске игры пользователю предлагается начать игру или выйти.
Рис.
После нажатия кнопки «начать», можно наблюдать появление графических объектов, таких как: 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/Баллистика
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы