string Game::takePlayerTurn() { for (;;) { cout << "Your move (n/e/s/w/p or nothing): "; string playerMove; getline(cin, playerMove); Player* player = m_colosseum->player(); int dir; if (playerMove.size() == 0) { if (recommendMove(*m_colosseum, player->row(), player->col(), dir)) return player->move(dir); else return player->push(); } else if (playerMove.size() == 1) { if (tolower(playerMove[0]) == 'p') return player->push(); else if (charToDir(playerMove[0], dir)) return player->move(dir); } cout << "Player move must be nothing, or 1 character n/e/s/w/p." << endl; } }
void Game::play() { m_colosseum->display(""); while ( ! m_colosseum->player()->isDead() && m_colosseum->villainCount() > 0) { string msg = takePlayerTurn(); Player* player = m_colosseum->player(); if (player->isDead()) break; m_colosseum->moveVillains(); m_colosseum->display(msg); } if (m_colosseum->player()->isDead()) cout << "You lose." << endl; else cout << "You win." << endl; }