* Issue: application crashes if I enter out of range coordiantes, for example 8 8. This is because Board::setPiece() does not do any range checking. (7) * Issue: code does not compile (3) * Issue: application only plays one round of the game, the TODO comment indicated to play 4 rounds. (3) * Issue: application announces incorrect winner: player 2 if player 1 won, and vice versa. (2) * Issue: Your code crashes after the second move every time. This happens because in Game::start() you have a while loop that increments currentPlayerIndex. As soon as currentPlayerIndex becomes 2, the call to players[currentPlayerIndex].takeTurn() will crash your application (because players array has two elements: 0 and 1). * Issue: the call to board.hasWinner() and board.hasOpenPositions() in the body of the while loop of Game::start() has no effect. * Issue: Unable to enter row 3, BoardPosition::select has a bug in the if-statement * Issue: Board::hasOpenPositions() function does the opposite of what it is intended to do: it returns false if here are open positions and true otherwise. Since your while loop in Game::start() checks for !board.hasOpenPositions(), your code works. However, that's a workaround for the issue in the Board class. * Issue: the call to board.hasWinner() and board.hasOpenPositions() in the body of the while loop of Game::start() has no effect. * Issue: you are alternating firstPlayerIndex as well as currentPlayerIndex during the course of the game. The point of firstPlayerIndex is to ensure that players alternate in who goes first.