Pacman
 
Загрузка...
Поиск...
Не найдено
Класс ComplexBuilder

#include <GameBuilders.h>

Граф наследования:ComplexBuilder:
CommonBuilder IGameBuilder

Открытые члены

void create_rooms () override
 
void set_rooms_sides () override
 
 CommonBuilder (float width, float height, float room_size)
 
- Открытые члены унаследованные от CommonBuilder
 CommonBuilder (float width, float height, float room_size)
 
void create_context (float static_objects_ratio, float dynamic_objects_ratio, int players) override
 Создает контекст для игры
 
void create_state (IStateManager &state_manager, const sf::VideoMode &mode, const std::string &window_title) override
 Cоздаем состояние GameState, используя имя, режим окна и сслыку на менеджер состояний
 
void set_all_to_state () override
 Созданный лабиринт и контекст назначаем созданному состоянию игры GameState.
 
std::unique_ptr< GameStateget_game () override
 Получить результат строителя.
 

Дополнительные унаследованные члены

- Защищенные данные унаследованные от CommonBuilder
float m_width
 
float m_height
 
float m_room_size
 
std::vector< std::vector< Room * > > m_rooms
 
GameContext m_context
 
std::unique_ptr< GameStatem_game_state
 

Подробное описание

сложный строитель для уровня HARD

Методы

◆ create_rooms()

void ComplexBuilder::create_rooms ( )
overridevirtual

создание комнат

Замещает IGameBuilder.

◆ set_rooms_sides()

void ComplexBuilder::set_rooms_sides ( )
overridevirtual

Генерация лабиринта через алгоритм Эллера

все комнаты нулевой строки сверху получают стену UP

все комнаты последней строки снизу получают стену DOWN

создаем проход направо между соседними комнатами

все комнаты нулевого столбца слева получают стену LEFT

все комнаты последнего столбца справа получают стену RIGHT

присваиваем ячейкам свое уникальное множество

исключаем последнюю строку

создавать стену или нет?

объединение множеств

соединение с ячейкой снизу/вверх

гарантируем, что в каждом множетве будет хотя бы один выход вниз

если есть еще ячейки, у которых нет выхода вниз -> можно поставить стену

обязательно ставим проход

всегда ставим проход

обновляем множества для следующей строки

Замещает IGameBuilder.


Объявления и описания членов классов находятся в файлах: