public void Play() { // Template InitializeRound(); GameBoard.Render(); while (!Finished) { Move move; do { move = ActivePlayer.MakeMove(GameBoard); } while (move == null); if (GameBoard.ExecuteMove(move, ActivePlayer)) { GameMoveHistory.AppendMove(move); } GameBoard.Render(); if (CheckVictory()) { HandleVictory(); break; } MoveCount++; if (CheckDraw()) { HandleDraw(); break; } ActivePlayer = NextPlayer(); } // End of a round HandleContinue(); }