Game Development Reference
In-Depth Information
// Room 2 heads West to Room 1
m_rooms[2].AddRoom(Room::JoiningDirections::West, &(m_rooms[1]));
m_rooms[2].AddStaticOption(&m_moveWestOption);
m_rooms[2].AddStaticOption(&m_quitOption);
m_rooms[2].AddDynamicOption(&m_attackDragonOption);
// Room 3 heads East to Room 1
m_rooms[3].AddRoom(Room::JoiningDirections::East, &(m_rooms[1]));
m_rooms[3].AddStaticOption(&m_moveEastOption);
m_rooms[3].AddStaticOption(&m_quitOption);
m_rooms[3].AddDynamicOption(&m_attackOrcOption);
m_player.SetCurrentRoom(&(m_rooms[0]));
}
The GivePlayerInput method is now much simpler, as you can see in Listing 19-18.
Listing 19-18. Game::GivePlayerInput
void Game::GivePlayerOptions() const
{
cout << "What would you like to do? (Enter a corresponding number)" << endl << endl;
// Print the options for the room
m_player.GetCurrentRoom()->PrintOptions();
}
The EvaluateInput method has some slightly more complicated code, shown in Listing 19-19.
Listing 19-19. Game::EvaluateInput
PlayerOptions Game::EvaluateInput(stringstream& playerInputStream)
{
PlayerOptions chosenOption = PlayerOptions::None;
unsigned int playerInputChoice{ 0 };
playerInputStream >>playerInputChoice;
try
{
Option* option = m_player.GetCurrentRoom()->EvaluateInput(playerInputChoice);
option->Evaluate(m_player);
chosenOption = option->GetChosenOption();
}
catch (const std::out_of_range&)
{
cout << "I do not recognize that option, try again!" << endl << endl;
}
return chosenOption;
}
Search WWH ::




Custom Search