Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

3. Практическая часть.

3.1. Структура программы и ее реализация.

Программа была реализована в виде сложного приложения C++ с использованием ООП, в частности классов и наследования.

В программе использовались как элементы стандартной библиотеки(vector, map), так и элементы подключаемой библиотеки sfml. Для загрузки файла используется функция loadFromFile, setTexture для присвоения текстуры спрайтам, setTextString для присвоения тексту определенной строки и т.д.

Библиотека SFML несмотря на свою компактность в реализации многих сложных действий ( например в sfml создание анимации занимает 4 строки, в то время как с помощью OpenGL реализация занимает сотни строк кода), многофункциональна и содержит более чем достаточно классов и методов для решения задач, которые ставит перед собой программист, выбирая в качестве проекта мультимедиа приложение, к которому можно отнести и игру.

Объектно- ориентированное программирование значительно облегчило задачу обработки всевозможных взаимодействий объектов игры. Наследование позволило создать класс ENTITY, содержащий метод update() и производные классы PLAYER, ENEMY, MOVINGPLATFORM при этом у них весьма похожие методы, как скажем, тот же update и писать его заново не пришлось.

Класс level дает возможность облегчить создание нового уровня, просто создав объект level lvl1 мы уже имеем все необходимые поля, присущие уровням нашей игры. Остается лишь открыть файл методом lvl.LoadFromFile(filename). Так же класс для анимации хранит в себе основные методы для быстрого ввода новой анимации в программу.

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

3.2. Интерфейс приложения.

При запуске приложения пользователь попадает на начальный экран с главным меню, где на заднем фоне воспроизводится звуковое сопровождение игры. (Рисунок 5.)

Рисунок 5. Главное меню.

Само меню состоит из трех пунктов: «New game», «About», «Exit». (Меню игры выделено красным цветом на Рисунке 5) В данный момент активным является пункт «New game», для активного состояния характерно изменение цвета и размера надписи, чтобы пользователь мог отчетливо видеть, что именно им сейчас выбрано. При передвижении по пунктам меню издается характерный звук. При нажатии на клавишу [E] можно соответственно начать новую игру, прочитать информацию о приложении (Рисунок 6.) либо выйти из игры.

Фиолетовым цветом (Рисунок 5.) выделена часть, которая демонстрирует пользователю его прогресс, то есть количество собранных им за игру монет (из 17 возможных, при сборе 17 из 17 победа в игре), при начале новой игры прогресс обнуляется. Надпись «Game» показывает пользователю, в каком состоянии сейчас игра, если эта надпись выделена зеленым цветом (Рисунок 7.), то пользователь сейчас в процессе игры. По окончании игры вместо этой надписи появится надпись «Victory!» (Рисунок 6.), в случае выполнения условия прохождения игры, либо «Game over», в случае поражения (смерти). Зеленым цветом (Рисунок 5.) выделено краткое руководство для пользователя, оно наглядно демонстрирует, какие клавиши необходимо нажимать пользователю для навигации по пунктам меню, выбора соответствующего пункта меню или управления персонажем.

Рисунок 6. Выбран пункт меню «About», пользователю демонстрируется, что он одержал победу в игре.

При выборе пользователем пункта «New game» он автоматически попадает на карту игры, где находится персонаж, монетки («Coin»), которые необходимо собирать для победы в игре и враги, которые могут быть уничтожены игроком посредством прыжка на них сверху или выстрелить в них, при нажатии клавиши [space]. (Рисунок 7.) Так же слева указывается количество собранных им монет, то, что пользователь находится в игре и количество жизней. (Выделено желтым цветом на Рисунке 7.) Теперь пользователь может непосредственно начать игровой процесс, управляя персонажем для достижения основной цели игры. Игрок взаимодействует с окружением, то есть при прохождении через монетку, она исчезает, при соприкосновении с врагом, персонаж начинает мигать и издавать характерный звук, при этом количество его жизней постепенно уменьшается, однако враги могут быть уничтожены, как было сказано выше. При попадании на шипы здоровье игрока так же начинает уменьшаться, но с большей скоростью. (Рисунок 8.) Если количество жизней игрока опускается до нуля, то игра считается оконченной проигрышем, так же будет считаться проигрыш, если пользователь во время игры нажмет на клавишу [Esc], что вернет его в главное меню. При сборе последней монеты пользователь автоматически возвращается в главное меню, де у него есть возможность начать игру снова либо выйти из игры.

Рисунок 7. Карта игры.

Рисунок 8. Ситуация попадания персонажа на шипы, при этом воспроизводится соответствующая анимация и звуковое сопровождение, а здоровье игрока начинает стремительно понижаться.