public void go() { display.display(); if (isGameEnded()) { System.out.println("Game Ended result: " + board.getStatus()); return; } System.out.println("Player " + currentPlayer.getName() + " moves."); Move move = currentPlayer.getNextMove(board.clone()); try { board.setCell(move.getRow(), move.getColumn(), currentPlayer.getSign()); } catch (InvalidAssignmentException e) { throw new RuntimeException(e); } currentPlayer = (currentPlayer == p1 ? p2 : p1); go(); }
/** * Implements the game ended status here * * @return true if the game is over */ private boolean isGameEnded() { return board.getStatus() != Status.GameOpen || board.getStatus() == Status.Draw; }