public Move getComputerMove(BoardSymbol symbol) { BoardSymbol oppositeSymbol = symbol.getOppositeSymbol(); for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { if (board[i][j] == BoardSymbol.Empty) { Move move = new Move(i, j); if (isWinningMove(symbol, move)) { return move; } } } } for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { if (board[i][j] == BoardSymbol.Empty) { Move move = new Move(i, j); if (isWinningMove(oppositeSymbol, move)) { return move; } } } } for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { if (board[i][j] == BoardSymbol.Empty) { return new Move(i, j); } } } throw new BoardFullException(); }