Java >> Tutoriel Java >  >> Java

Programme Java 2d Array Tic Tac Toe

Programme Java 2d Array Tic Tac Toe | Tic Tac Toe est un jeu de morpion composé de 0 et de X. Ce jeu est généralement joué par deux joueurs dans une grille de trois par trois. Le joueur qui place des X ou des 0 horizontalement, verticalement ou en diagonale sera déclaré vainqueur. Prérequis :- Tableau multidimensionnel en Java

Voir par exemple le tableau tic tac toe après le jeu devrait ressembler à ceci :-

X X X
0 0 X
0 X 0
Le joueur qui a placé X horizontalement est le gagnant.

X 0 0
0 0 X
0 X X
Le joueur qui a placé 0 en diagonale est le gagnant.

Code de programme Java 2d Array Tic Tac Toe

Voyons le code Java tic tac toe utilisant un tableau 2d.

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
      char[][] board = new char[3][3];
      for (int i = 0; i < 3; i++) {
         for (int j = 0; j < 3; j++) {
            board[i][j] = '-';
         }
      }

      Scanner scan = new Scanner(System.in);
      System.out.println("Let's start the game TIC TAC TOE.");
      System.out.print("Enter the name of Player1: ");
      String play1 = scan.nextLine();
      System.out.print("Enter the name of Player2: ");
      String play2 = scan.nextLine();

      boolean player1 = true;
      boolean gameEnded = false;
      
      while (!gameEnded) {
         drawBoard(board);

         if (player1) {
            System.out.println(play1 + "'s Turn (X): ");
         } else {
            System.out.println(play2 + "'s Turn (O): ");
         }

         char c = '-';
         if (player1) {
            c = 'X';
         } else {
            c = 'O';
         }

         int row = 0;
         int col = 0;

         while (true) {
            System.out.print("Enter a row number (0, 1, or 2): ");
            row = scan.nextInt();
            System.out.print("Enter a column number (0, 1, or 2): ");
            col = scan.nextInt();
            if (row < 0 || col < 0 || row > 2 || col > 2) {
               System.out.println("This position is off the "+
                            "bounds of the board! Try again.");
            } else if (board[row][col] != '-') {
               System.out.println("Someone has already made a "+
                          "move at this position! Try again.");
            } else {
               break;
            }

         }

         board[row][col] = c;
         if (playerHasWon(board) == 'X') {
            System.out.println(play1 + " has won!");
            gameEnded = true;
         } else if (playerHasWon(board) == 'O') {
            System.out.println(play2 + " has won!");
            gameEnded = true;
         } else {
            if (boardIsFull(board)) {
               System.out.println("It's a tie!");
               gameEnded = true;
            } else {
               player1 = !player1;
            }
         }
      }
      drawBoard(board);
      scan.close();
   }

   public static void drawBoard(char[][] board) {
      System.out.println("Board:");
      for (int i = 0; i < 3; i++) {
         for (int j = 0; j < 3; j++) {
            System.out.print(board[i][j]);
         }
         System.out.println();
      }
   }

   public static char playerHasWon(char[][] board) {
      for (int i = 0; i < 3; i++) {
         if (board[i][0] == board[i][1] && 
             board[i][1] == board[i][2] && 
             board[i][0] != '-') {
            return board[i][0];
         }
      }

      for (int j = 0; j < 3; j++) {
         if (board[0][j] == board[1][j] && 
             board[1][j] == board[2][j] && 
             board[0][j] != '-') {
            return board[0][j];
         }
      }

      if (board[0][0] == board[1][1] && 
          board[1][1] == board[2][2] && 
          board[0][0] != '-') {
         return board[0][0];
      }

      if (board[2][0] == board[1][1] && 
          board[1][1] == board[0][2] && 
          board[2][0] != '-') {
         return board[2][0];
      }

      return ' ';
   }

   public static boolean boardIsFull(char[][] board) {
      for (int i = 0; i < 3; i++) {
         for (int j = 0; j < 3; j++) {
            if (board[i][j] == '-') {
               return false;
            }
         }
      }
      return true;
   }
}

La sortie du code Java tic tac toe utilisant un tableau 2d :-

Commençons le jeu TIC TAC TOE.
Entrez le nom du Joueur1 :Amelia
Entrez le nom du Joueur2 :Jhon
Plateau :
---
---
---

Le tour d'Amelia (X) :
Entrez un numéro de ligne (0, 1 ou 2) :0
Entrez un numéro de colonne (0, 1 ou 2) :0
Planche :
X--
---
---

Jhon's Turn (O) :
Entrez un numéro de ligne (0, 1 ou 2) :0
Entrez un numéro de colonne (0, 1 ou 2) :2
Planche :
X-O
---
---

Le tour d'Amelia (X) :
Entrez un numéro de ligne (0, 1 ou 2) :1
Entrez un numéro de colonne (0, 1 ou 2) :1
Planche :
X-O
-X-
---
Jhon's Turn (O) :
Entrez un numéro de ligne (0, 1 ou 2) :1
Entrez un numéro de colonne (0, 1 ou 2) :2
Planche :
X-O
-XO
---
Le tour d'Amelia (X) :
Entrez un numéro de ligne (0, 1 ou 2) :2
Entrez un numéro de colonne (0, 1 ou 2) :2
Amelia a gagné !
Conseil :
X-O
-XO
--X

Dans le tic tac toe du tableau Java 2d ci-dessus, nous avons pris une matrice 3 × 3. Cette matrice 2d est initialisée avec le caractère '-'. Une entrée ultérieure pour la matrice est demandée à l'utilisateur. En fonction de la valeur saisie, si une correspondance de tic tac toe est trouvée, l'utilisateur gagne.


Balise Java