Java >> Java tutorial >  >> Java

Java 2d Array Tic Tac Toe-program

Java 2d Array Tic Tac Toe-program | Tic Tac Toe er et spil om nuller og krydser, der er 0'er og X'er. Dette spil spilles normalt af to spillere i et tre-til-tre-gitter. Spilleren, der placerer X'er eller 0'er vandret, lodret eller diagonalt, vil blive betegnet som vinderen. Forudsætning:- Multi-dimensional array i Java

Se f.eks. tic tac toe-brættet efter stykket skal se sådan ud:-

X X X
0 0 X
0 X 0
Den spiller, der har placeret X vandret, er vinderen.

X 0 0
0 0 X
0 X X
Den spiller, der har placeret 0 diagonalt, er vinderen.

Java 2d Array Tic Tac Toe-programkode

Lad os se tic tac toe Java-koden ved hjælp af 2d-array.

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;
   }
}

Outputtet af tic tac toe Java-kode ved hjælp af 2d array:-

Lad os starte spillet TIC TAC TOE.
Indtast navnet på Player1:Amelia
Indtast navnet på Player2:Jhon
Bræt:
---
---
---

Amelia's Turn (X):
Indtast et rækkenummer (0, 1 eller 2):0
Indtast et kolonnenummer (0, 1 eller 2):0
Board:
X--
---
---

Jhons tur (O):
Indtast et rækkenummer (0, 1 eller 2):0
Indtast et kolonnenummer (0, 1 eller 2):2
Board:
X-O
---
---

Amelia's Turn (X):
Indtast et rækkenummer (0, 1 eller 2):1
Indtast et kolonnenummer (0, 1 eller 2):1
Board:
X-O
-X-
---
Jhons tur (O):
Indtast et rækkenummer (0, 1 eller 2):1
Indtast et kolonnenummer (0, 1 eller 2):2
Board:
X-O
-XO
---
Amelia's Turn (X):
Indtast et rækkenummer (0, 1 eller 2):2
Indtast et kolonnenummer (0, 1 eller 2):2
Amelia har vundet!
Bestyrelse:
X-O
-XO
--X

I ovenstående Java 2d array tic tac toe tog vi en 3×3 matrix. Denne 2d-matrix initialiseres med tegnet '-'. Senere input til matricen bliver bedt om fra brugeren. Baseret på den indtastede værdi, hvis en tic tac toe match er fundet, vinder brugeren.


Java tag