Я кодирую NDS в C++. Я планирую писать игру, в которой события происходят последовательно и изменяются в зависимости от выбора игрока, например дерева решений. Пример:Как программировать игру с последовательностью событий
=== Местоположение ===
- Прихожие: 2 двери игрок может пройти через
- ванной: Имеет секретный вход в подвал
- Подвал: ведет обратно в коридор
- Спальня: Приводит к ванной
=== Последовательность ===
В каждой комнате будут постоянно проверяться нажатия клавиш. Так что это основной и вообще плохой способ кодировать последовательность, которая изначально я думал о:
void drawText()
{
//writes the specified text to the screen depending on the room
}
void playGame()
{ //This function gets called to play through the whole game
drawText();
while(1)
{
updateKeys();
if (newPress()) //New key is pressed
{
if (getButtonInt()==BATHROOM_INT)
bathroom(); //it will launch the basement function as a subroutine
else //Bedroom
bedroom(); //it will launch the bathroom function as a subroutine
drawText();
}
//When returning from room function, the
}
}
Некоторые из многих недостатков этого метода являются:
- Near невозможно реализовать мультиплеер, так как все будет необходимо постоянно обновлять
- Невозможно обновить другие функции (например, ракурс/время Tracker)
- Добавление опции перехода между комнатами вызовет рекурсию и, возможно, переполнение памяти
Итак, вопрос: Какая лучшая альтернатива, которая устраняет эти недостатки?
Да, я мог бы написать все в инструкции switch и иметь переменную вне функции playGame отслеживать местоположение в инструкции switch, но структура не кажется читаемой или логической.
Возможно, вам нужна структура данных, которая для каждой комнаты определяет, в каких комнатах вы попадаете с определенным направлением движения. –
Исследование «государственного» шаблона проектирования или конечного автомата. Ваша диаграмма выглядит как рисунок конечного автомата с переходами. –
Исследование «учебник по реляционной базе данных» и «нормальные формы базы данных». Это может помочь вам позже. –