import java.util.Scanner; public class Esercizio3 { public static void main(String[] args) { Scanner kbd = new Scanner(System.in); char[][] board = Tris.createEmptyBoard(); // Usiamo la variabile "player" per memorizzare il giocatore che deve fare la // prossima mossa. Si inizia con il giocatore 'X'. char player = 'X'; // Usiamo la variabile "winner" per memorizzare il giocatore che ha vinto. // Inizialmente contiene uno spazio perché non ha vinto nessuno. char winner = ' '; // Usiamo la variabile "moves" per contare il numero di mosse effettuate int moves = 0; // Continua finché non c'è un vincitore oppure è stato riempito tutto il campo da gioco. while (winner == ' ' && moves < Tris.BOARD_DIMENSION * Tris.BOARD_DIMENSION) { // Visualizza il campo da gioco attuale. Tris.showBoard(board); if (player == 'X') { // Il giocatore X è un umano: chiede la mossa all'utente 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) { // Se la mossa non è valida, visualizza un messaggio d'errore e con il comando // continuesalta il resto del ciclo while, in modo da non modificare né la // variabile "player" né il contatore di mosse "moves". System.out.println("MOSSA NON VALIDA!"); continue; } } else { // Il giocatore O è un compiter: esegue la mossa automaticamente System.out.println("Muove il computer"); Tris.moveComputer(board, 'O'); } // Aggiorna le variabili player, moves e winne player = Tris.nextPlayer(player); moves += 1; winner = Tris.winner(board); } // Mostra l'ultima volta il campo da gioco e comunica il risultato della partita. Tris.showBoard(board); if (winner != ' ') System.out.println("HA VINTO IL GIOCATORE " + winner); else System.out.println("PAREGGIO"); kbd.close(); } }