井字游戏,电脑无法获胜(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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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