Формальная постановка задачи 


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



ЗНАЕТЕ ЛИ ВЫ?

Формальная постановка задачи



Входные данные: символы клавиш управления танком:

– ←, ↑, →, ↓ – для управления передвижением танка первого игрока;

– NUM0 – для стрельбы у первого игрока;

– W(вперед), A(влево), S(вниз), D(вправо) – для управления передвижением танка второго игрока;

– Space – для стрельбы у второго игрока;

– И информация о карте и танках, содержащаяся в текстовых файлах (map1, tank2, map2, tank2, …).

Выходные данные: графическое изображение игры, а также информационные сообщения.

Метод решения: Длярешениязадачи должны быть созданы классы для следующих объектов: танк (pTank, Tank, enemyTank), препятствия (кирпичный блок (brick), бетонный блок (beton) и другие (iceblock, waterblock, mask, bulblock)), игровое поле (battleground), бонус (bonus), снаряд (bullet) и базу (base). Основными методами классов должны быть вывод графического изображения объекта и изменение его данных. Так же карты и внешность танка должны загружаться из текстового файла, это позволит вносить изменения без затруднений обычному пользователю. Пример игровой карты (1 уровень) представлен на рисунке 7.

Рисунок 7 – Пример карты


 

Каждая цифра кодирует один игровой блок. Соответствием цифры и типа блока  приведено в таблице 2.

Таблица 2 – Представление блоков игровой карты

Кирпичная стена 4
Бетонная стена 8
Кусты 2
Лёд 3
Вода 9
Непустые блоки 1
База 5

UML модель

Иерархия классов данной модели представляет собой главный класс battleground, содержащий в себе все остальные. Связь классов друг с другом происходит через класс battleground. Ниже на рисунке 8 представлена объектная модель.

Краткое описание классов:

- battleground представляет собой основной класс, объединяющий другие, а также содержащий методы для считывания карт и их вывода;

- bullet является классом для вывода, передвижения, проверку на препятствия и удаление снаряда танков;

- bulblock представляет модель коллизии (физическую модель) для класса bullet;

- bonus содержит поля (тип бонуса и время до исчезновения) и методы (ввод, вывод и активация самого бонуса), связанные с бонусами, описанными ранее в теоретической части;

- класс base является базой, которую надо защитить игроку от врагов (имеются поля координат, статуса и метод по выводу базы на экран);

- класс mind является автоматом, созданным для управления поведением танков противников;

- класс block в свою очередь является базовым для классов brick, beton, mask, iceblock, waterblock. Отличия классов состоят в различных свойствах каждого блока. В основном они состоят из полей координат блоков, статуса и методов по их выводу и удаления с карты, а также конструктора, который задает цвет текста, фона и символа для обозначения блока данного препятствия;

- от класса pTank наследуются Tank и ene m y Tank, представляющие танки игроков и противников соответственно (содержат координаты танков и методы для их передвижения). В классах наследниках находятся их отличительные поля и методы, так же переопределения для функции созданий и передвижений танков (т.к. класс Tank отводится под игрока, а enemyTank – под компьютерного противника).

-

Рисунок 8 – Объектная модель

Ниже на рисунке 9 представлена объектная модель наследования игровых препятствий от класса Block. А на рисунке 10 объектную модель танков, наследуемую от класса Ptank.


 

Рисунок 9 –Объектная модель препятствий

 

Рисунок 10 –Объектная модель танков


Алгоритм решения задачи

Начало
Обновление текстовой информации и таймеров
Обработка нажатий клавиш
Передвижение танка игрока
Передвижение танков противника
Остановка программы на 50 мс
Конец
Ниже на рисунке 11 показана блок-схема функции main. Эта схема является основным алгоритмом, обрабатывающим нажатия клавиш пользователем и запускающем функции передвижения объектов игры.

 

 

Рисунок 11 – основной цикл

 

Данный цикл выполняется да тех пор, пока игрок не выйдет из игры или потерпит поражение, так как после прохождения последнего уровня игра начинается с первого уровня, но с большим уровнем сложности.


 



Поделиться:


Последнее изменение этой страницы: 2021-05-27; просмотров: 168; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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