import java.util.Scanner; /** * Questo è lo stesso programma principale usato per l'esercizio 3, tranne per il fatto che utilizza * il metodo moveComputer di questa classe, invece di quello della classe Tris. Il metodo moveComputer * di questa classe sceglie una mossa a caso invece della prima casella libera. */ public class Esercizio4 { public static void moveComputer(char[][] board, char player) { int i, j; do { // determina causalmente un numero di riga e di colonna i = (int) (Math.random() * 3); j = (int) (Math.random() * 3); // ma se questa posizione è già occupata (board[i][j] != ' ') ripeti la scelta } while (board[i][j] != ' '); board[i][j] = player; } public static void main(String[] args) { Scanner kbd = new Scanner(System.in); char[][] board = Tris.createEmptyBoard(); char player = 'X'; char winner = ' '; int moves = 0; while (winner == ' ' && moves < Tris.BOARD_DIMENSION * Tris.BOARD_DIMENSION) { Tris.showBoard(board); if (player == 'X') { System.out.print( "Giocatore " + player + ", inserisci riga e colonna dell tua mossa: "); int movei = kbd.nextInt(); int movej = kbd.nextInt(); boolean result = Tris.movePlayer(board, movei, movej, 'X'); if (!result) { System.out.println("MOSSA NON VALIDA!"); continue; } } else { System.out.println("Muove il computer"); // ATTENZIONE: uso "moveComputer" (che è il metodo definito in questa classe) invece di // Tris.moveComputer (che è il metodo definito nella classe Tris). moveComputer(board, 'O'); } // Aggiorna le variabili player, moves e winne player = Tris.nextPlayer(player); moves += 1; winner = Tris.winner(board); } Tris.showBoard(board); if (winner != ' ') System.out.println("HA VINTO IL GIOCATORE " + winner); else System.out.println("PAREGGIO"); kbd.close(); } }