我正在用Java编写一个井字游戏。我还没有完成,但已经做了一些工作,游戏应该快可以玩了。问题是,我已经编写了代码,理论上电脑应该可以获胜,但它并不起作用。当电脑连成一线时,它只是继续玩,而没有显示“电脑获胜!”的提示。
这是代码:
import java.util.Scanner;import java.util.concurrent.ThreadLocalRandom;;public class Main {static int[][] gameBoard = new int[3][3];static Scanner userInput = new Scanner(System.in);public static void main(String[] args) { //初始化游戏棋盘 for(int x=0;x<3; x++){ for(int i=0;i<3;i++){ gameBoard[x][i] = 0; } } gameLoop();}static void gameLoop(){ boolean loop = true; while(loop==true){ displayBoard(); playerMove(); if(checkIfWin() == true){ loop = false; } if(checkIfLose() == true) loop = false; computerInput(); }}static void playerMove(){ String playerInput; System.out.println(); System.out.print("你的移动: "); playerInput = userInput.next(); if(playerInput.equals("a1")){ if(gameBoard[0][0] == 0){ gameBoard[0][0] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("a2")){ if(gameBoard[1][0] == 0){ gameBoard[1][0] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("a3")){ if(gameBoard[2][0] == 0){ gameBoard[2][0] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("b1")){ if(gameBoard[0][1] == 0){ gameBoard[0][1] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("b2")){ if(gameBoard[1][1] == 0){ gameBoard[1][1] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("b3")){ if(gameBoard[2][1] == 0){ gameBoard[2][1] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("c1")){ if(gameBoard[0][2] == 0){ gameBoard[0][2] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("c2")){ if(gameBoard[1][2] == 0){ gameBoard[1][2] = 1; }else{ System.out.println("这个位置已经被占用!"); } }else if(playerInput.equals("c3")){ if(gameBoard[2][2] == 0){ gameBoard[2][2] = 1; }else{ System.out.println("这个位置已经被占用!"); } }}static boolean checkIfLose(){ if(gameBoard[0][0] == 2 && gameBoard[0][1] == 2 && gameBoard[0][2] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else if(gameBoard[1][0] == 2 && gameBoard[1][1] == 2 && gameBoard[1][2] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else if(gameBoard[2][0] == 2 && gameBoard[2][1] == 2 && gameBoard[2][2] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else if(gameBoard[0][1] == 2 && gameBoard[2][1] == 2 && gameBoard[2][1] == 2){ System.out.println("\n电脑获胜!"); displayBoard(); return true; }else if(gameBoard[0][0] == 2 && gameBoard[1][0] == 2 && gameBoard[2][0] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else if(gameBoard[2][0] == 2 && gameBoard[2][1] == 2 && gameBoard[2][2] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else if(gameBoard[0][2] == 2 && gameBoard[1][2] == 2 && gameBoard[2][2] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else if(gameBoard[0][0] == 2 && gameBoard[1][1] == 2 && gameBoard[2][2] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else if(gameBoard[0][2] == 2 && gameBoard[1][1] == 2 && gameBoard[2][0] == 2){ displayBoard(); System.out.println("\n电脑获胜!"); return true; }else{ return false; }}static boolean checkIfWin(){ if(gameBoard[0][0] == 1 && gameBoard[0][1] == 1 && gameBoard[0][2] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else if(gameBoard[1][0] == 1 && gameBoard[1][1] == 1 && gameBoard[1][2] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else if(gameBoard[2][0] == 1 && gameBoard[2][1] == 1 && gameBoard[2][2] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else if(gameBoard[0][1] == 1 && gameBoard[2][1] == 1 && gameBoard[2][1] == 1){ System.out.println("\n你获胜了!"); displayBoard(); return true; }else if(gameBoard[0][0] == 1 && gameBoard[1][0] == 1 && gameBoard[2][0] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else if(gameBoard[2][0] == 1 && gameBoard[2][1] == 1 && gameBoard[2][2] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else if(gameBoard[0][2] == 1 && gameBoard[1][2] == 1 && gameBoard[2][2] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else if(gameBoard[0][0] == 1 && gameBoard[1][1] == 1 && gameBoard[2][2] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else if(gameBoard[0][2] == 1 && gameBoard[1][1] == 1 && gameBoard[2][0] == 1){ displayBoard(); System.out.println("\n你获胜了!"); return true; }else{ return false; }}static void displayBoard(){ System.out.println(" A B C"); for(int x=0; x<3; x++){ if(x>0) System.out.println(); System.out.print(x+1 + " "); for(int i=0; i<3; i++){ if(i>0) System.out.print(" "); System.out.print(gameBoard[x][i]); } }}static void computerInput(){ int x; int y; boolean loop = true; while(loop == true){ x = 0; y = 0; x = ThreadLocalRandom.current().nextInt(0, 2 + 1); y = ThreadLocalRandom.current().nextInt(0, 2 + 1); if(gameBoard[y][x] == 0){ gameBoard[y][x] = 2; loop = false; } }}}
回答: