
Практика Основные концепции
Игрок появившийся в замкнутой территории, уничтожает различных вражеских персонажей зарабатывая на этом опыт для выигрыша. Есть и некоторое разнообразие: уничтожение некоторых персонажей приводит к выпадению из них предметов, содержащих положительный бонус.
Необходимо реализовать:
Физику движения(обработка столкновений с блоками, с игроком, с пулями и с вражескими персонажами)
Систему состояний объектов игрового мира(состояния игрока, пулей и персонажа)
Систему бонусов и их взаимодействия с объектами игрового мира
Реализовать систему жизней(кол-во очков здоровья).
Реализовать интеллект для врагов.
Интуитивно понятный дружелюбный интерфейс
Реализовать систему уровней
По сути, игра представляет собой меняющиеся по времени сложность игры. Игра прекращается, как только пользователь потерял все жизни.
Описание объектов
Игрок – имеет здоровье(HP), оружие(Arm), гранаты, скорость(Speed), зависящую от нажатия клавиш W A S D. Персонаж представлен классом TPerson, наследованного от класса TCreature .
Вражеские персонажи – имеют здоровье(HP), 2 состояния, скорость(Speed), урон(Damage), который они наносит игроку. Вражеский персонаж представлен классом TMonster, наследованного от класса TCreature. Состояния в которых может находится персонаж это с оружием и без оружия. Обычно персонаж находится в режиме без оружия и имеет силу удара равную 1. В режиме с оружием, появляется после нахождения в игровой области более 15 персонажей.
Оружие – имеет скорость перезарядки между обоймами, интервал между выстрелом и количество патрон. Представлен классом TArm.
Пуля – имеет скорость, наносимый урон. Представлен классом TBullet, наследованного от класса TCreature.
Граната – имеет скорость. Представлен классом TGrenade, наследованного от класса TCreature.
Бонус предмет - объект, который активируется, если подойти у нему. В игре присутствует 4 типов бонусов: дополнительное здоровье, дополнительная граната, увеличение скорости, улучшение оружия. Представлен классом TThing, наследованного от класса TCreature.
Диаграмма классов

TTotal – класс представления всей структуры игра.
TMap – класс представления игровой карты.
TCreature – класс представления любого предмета находящегося на карте.
TPerson – класс представления игрока.
TMonster – класс представления вражеского персонажа
TArm – класс представления оружия.
TBullet – класс представления пули.
TGrenade – класс представления гранаты
TThing – класс представления бонусных предметов.
TPerk – класс представления коэффициента параметров игрока и персонажей
TTotal {
…
void Draw(); – метод реализации игры .
void DrawInfa(); – метод для рисования информации.
void DrawONForm(); – метод для рисования фона на форме.
void DrawPerson(); – метод для рисования игрока на фоне.
void DrawBullet(); – метод для рисования пули на фоне.
void DrawMonster(); – метод для рисования вражеских персонажей на фоне.
void DrawGrenade(); – метод рисование гранат на фоне.
void DrawThing(); – метод рисования бонусных предметов на фоне
float DetermineAngular(float XPos, float YPos); – подсчет угла поворота персонажа по курсору.
void ClashBullet(); – метод для подсчета столкновение пули с игроком и монстрами.
void ClashTheng(); – метод для подсчета сбора бонусных предметов.
void MotionMonster(); –метод для реализации движения врагов.
void MotionBullet(); – метод для реализации полета и столкновения со стеной.
void MotionGrenade(); – метод для реализации полета гранаты.
void BOOMGrenade(); – метод взрыва гранаты.
void AddBullet(int damage, int Speed, float x1, float y1, float angle, bool shot); – метод добавления пули.
void AddGrenade(int Speed, float angle, float x0, float y0, float x1, float y1); – метод добавления гранаты.
void PosCursor(int X,int Y); – метод получения нахождения курсора.
void RotateDC(HANDLE dc,float angle); – метод поворота изображения
void motion(); – метод движения
void AddMonster(int col); – метод добавления врага.
bool ClashWallX(float X, float Y, int len, float angle, float speed); – метод подсчета разрешения перемещения по ось Оу.
bool ClashWallY(float X, float Y, int len, float angle, float speed); – метод подсчета разрешения перемещения по оси Ох.
void RandThing(float x ,float y); – метод вычисления случайного появления бонусного объекта.
void IncTime(); – метод увеличения таймера.
void the_end(bool finish, int EX); – метод завершения игры
}