java - 检查获胜者 Tic Tac Toe 游戏 Java

标签 java arrays tic-tac-toe

我的获胜者检查方法没有检测到平局游戏。我不明白平局游戏的问题出在哪里,并且在专栏中进行搜索,所以如果有人可以提供帮助,那就太好了!代码如下

public static boolean CheckForWinner(int player)
            {
                //Row and Column Check
                if (GameBoard[0][0] == player && GameBoard[0][1] == player && GameBoard[0][2] == player ||
                    GameBoard[1][0] == player && GameBoard[1][1] == player && GameBoard[1][2] == player ||
                    GameBoard[2][0] == player && GameBoard[2][1] == player && GameBoard[2][2] == player ||
                    GameBoard[0][0] == player && GameBoard[1][0] == player && GameBoard[2][0] == player ||
                    GameBoard[0][1] == player && GameBoard[1][1] == player && GameBoard[2][1] == player ||
                    GameBoard[0][2] == player && GameBoard[1][2] == player && GameBoard[2][2] == player)
                    {
                        finalwinner=true;
                        return true;
                    }

                //diagonal checks
                if (GameBoard[0][0]==player && GameBoard[1][1]==player && GameBoard[2][2]==player)
                {
                finalwinner=true;
                return true;
                }

                if (GameBoard[2][0]==player && GameBoard[1][1]==player && GameBoard[0][2]==player)
                {
                finalwinner=true;
                return true;
                }

                //Tie Game Check
                if (GameBoard[0][0] == player && GameBoard[0][1] == player && GameBoard[0][2] == player &&
                    GameBoard[1][0] == player && GameBoard[1][1] == player && GameBoard[1][2] == player &&
                    GameBoard[2][0] == player && GameBoard[2][1] == player && GameBoard[2][2] == player)
                    {
                tieGame=true;
                    return true;
                }
                return false;
            }

这是主要方法:

       public static void main (String[] args)
                {
                System.out.println("Tic Tac Toe Game");
                System.out.println("Player 1 is 1, Computer is 2");

                Draw();
                currentplayer=1;
                while (winner!= true)
                {
                    if(currentplayer==1)
                        {
                            System.out.println("Your Turn");
                            Player1Turn(currentplayer);
                        }
                    else
                        ComputerTurn(currentplayer);

                    finalwinner=CheckForWinner(currentplayer);

                    if(finalwinner==true && tieGame==false)
                    {
                        System.out.println("Winner is Player" +currentplayer+ "Congrats Champion!");
                        System.out.println("Beginning New Game! Press Cancel then Enter to Exit");
                        Reset();
                    }

                    if(tieGame==true)
                    {
                        System.out.println("It's a Tie! Play Again.");
                        System.out.println("Beginning New Game! Press Cancel then Enter to Exit");
                        Reset();
                    }

                    if(currentplayer==1)
                        currentplayer=2;
                    else if(currentplayer==2)
                        currentplayer=1;
                }

                }

最佳答案

问题是 if 语句中的这个表达式:

GameBoard[0][0] == player && GameBoard[0][1] == player && GameBoard[0][2] == player &&
                    GameBoard[1][0] == player && GameBoard[1][1] == player && GameBoard[1][2] == player &&
                    GameBoard[2][0] == player && GameBoard[2][1] == player && GameBoard[2][2] == player

您正在检查玩家是否处于每个棋盘位置。

您想要确定没有赢家。这意味着检查所有行、列和对角线都没有相同的玩家。

关于java - 检查获胜者 Tic Tac Toe 游戏 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37199056/

相关文章:

c - 试图让 scanf 不去 for 循环中的新行(C 编程)

Java 原始类型提升困惑

arrays - 序列化错误

python - 在 python 中平均多个掩码 numpy 数组

mysql - Tictactoe 游戏输入意外结束,需要 IF MySQL

c++ - 停留在 TicTacToe 检查移动是否有效 C++

python递归实例变量共享数据

java - 为什么点击数字或符号时 Android 软键盘会省略(删除)字母?

java - 为什么我的代码不能同时运行两个面板?当我运行它时它没有显示任何东西,但它编译

java - quartz 性能