井字游戏,电脑无法获胜(Java)

我正在用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;    }    }}}

回答:

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注