当前位置: 首页 > 知识库问答 >
问题:

在我的android井字游戏中,checkForWin()方法总是错误地放置学分

壤驷深
2023-03-14

在我的井字游戏中,checkForWin()方法应该检查当前的玩家,并为该玩家赢得胜利提供信任,但它总是给错误的玩家提供信任,尤其是当numOfPlayers条件成立时。玩家一赢了游戏,但玩家二赢了,我检查了一下,以确保在当前玩家被交换之前,文本被设置为按钮后调用checkForWin()方法,但问题仍然存在。我需要帮助。这不是所有的代码,只是我觉得相关的部分。

  @Override
    public void onClick(View v) {
        if (!((Button) v).getText().toString().equals("")) {
            return;
        }
        if (numOfPlayers){

            do {
                ((Button) v).setText("X");
                checkForWin();
              player1Turn = !player1Turn;
            }
                while (player1Turn);
                ComputerPlays();

            }


        else {

            if (player1Turn) {
                ((Button) v).setText("X");
            } else {
                ((Button) v).setText("O");
            }
        }

        roundCount++;

        if (checkForWin()) {
            if (player1Turn) {
                player1Wins();
            } else {
                player2Wins();
            }
        } else if (roundCount == 9) {
            draw();
        } else {
            player1Turn = !player1Turn;
        }

    }

    private void ComputerPlays()
    {
        Random rand;
        rand = new Random();

      if (roundCount!=9) {
          int i;
          int j;


          do {
                i = rand.nextInt( 2 );
                j = rand.nextInt(2);
              }while (!game_buttons[i][j].getText().toString().equals(""));
          game_buttons[i][j].setText("O");

      }

    }

共有1个答案

漆雕昊天
2023-03-14

我知道,因为你在检查后交换播放器,你需要使用:

if (checkForWin()) {
        if (!player1Turn) {
            player1Wins();
        } else {
            player2Wins();
        }
    }
 类似资料:
  • 我正在制作一个名为SOS的游戏。这是一款3x3的棋盘游戏,与Tic Tac Toe的概念相同,但在这款游戏中,玩家无法选择是以X还是O的身份进行游戏,游戏中唯一的规则是形成“SOS”。 我们的项目应该在所有职位被填补后终止,每个组成的“SOS”将被添加到组成“SOS”的玩家中。 我的问题是关于得分。在第一行输入SOS后,即,我尝试在第二行第一列输入“O”,玩家2将递增。它不应该递增,因为它不满足我

  • 嗨,我正在编写一个井字游戏。我已经在代码中的注释中详细说明了我需要什么。我现在遇到的问题是制作一个getMobile方法。我想我需要在按下行和列后的if/else语句中调用getMobile方法? 我不确定如何从获取行/列编号并将其放入我的板上以获取用户输入的内容。 以下是我的代码:

  • 所以我为我的课做了一个抽动练习作业。我已经成功地创建了一个简单的Tic Tac Toe程序,但不知何故,检查绘制的方法有时并不正确。如果所有东西都填满了,但没有赢家,那就是平局。但如果除第0行第1列外,其他所有内容都已填满,则即使该框仍为空白,它仍将显示“Draw”。如果你不明白我的意思,就试着把所有的东西都填满,但不是赢,即使最后一个框没有填满,它也会说“平局”。我在代码中做错了什么????驱动

  • 我用Java写了Tic-Tac-Toe。我似乎遇到的问题是,当(人类)播放器1和(计算机)播放器2之间出现平局时,GUI会冻结。我已经在“Buttonlistener”类和“Methods”中创建了一个tieCheck,以获得一个平局。 我的程序的工作方式是,当按下一个按钮时,它会将一个值传递给methods类中的数组。在这个数组中,1=玩家1,2=玩家2。 人类玩家总是先走,所以当人类玩家走了4

  • 我写的神经网络可以玩井字游戏。网络有9个输入神经元,它们描述板的状态(1-代表网络移动,1.5-代表对手移动,0-代表空单元)和9个输出神经元(具有最高值的输出神经元表示给定状态下的最佳动作)。网络没有隐藏层。激活函数-乙状结肠。学习方法--Q学习+反向传播。 网络是经过训练的,但很差(继续踩在被占用的单元格上)。所以我决定添加一个隐藏层。我想问: 在隐藏层中使用多少个神经元,在隐藏层和输出层中使

  • 有人给了我一个井字游戏的代码。我制作了代码来检查垂直方向是否会赢,并尝试检查对角线。我能够检查主对角线,但似乎无法确定如何检查辅助对角线。我以为我拥有的代码会起作用,但事实并非如此。我的问题从第172行开始