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

Tic Tac Toe win条件未正确激活

秦建元
2023-03-14

我刚才问过一个问题。经过大量的代码重写,我的井字脚趾看起来很好,除了一个明显的问题。当我尝试玩游戏时,赢的条件似乎是随机激活的--我会在一行中有X-O-X,并说“玩家x赢了!”,但当我有O-O-O时,它不会检测到赢。不过画画还行。

赢取条件代码:

 // win conditions. if true, set win==true; else set win==false
            if (square[0].getText().equals(square[1].getText())
                    && square[1].getText().equals(square[2].getText())
                    != square[0].getText().isEmpty()) {
                    win = true;}

            if (square[3].getText().equals(square[4].getText())
                    && square[4].getText().equals(square[5].getText())
                    != square[3].getText().isEmpty()) {
                    win = true;}

            if (square[6].getText().equals(square[7].getText())
                    && square[7].getText().equals(square[8].getText())
                    != square[6].getText().isEmpty()) {
                    win = true;}

            if (square[0].getText().equals(square[3].getText())
                    && square[3].getText().equals(square[6].getText())
                    != square[0].getText().isEmpty()) {
                    win = true;}

            if (square[1].getText().equals(square[4].getText())
                    && square[4].getText().equals(square[7].getText())
                    != square[1].getText().isEmpty()) {
                    win = true;}

            if (square[2].getText().equals(square[5].getText())
                    && square[5].getText().equals(square[8].getText())
                    != square[2].getText().isEmpty()) {
                    win = true;}

            if (square[0].getText().equals(square[4].getText())
                    && square[4].getText().equals(square[8].getText())
                    != square[0].getText().isEmpty()) {
                    win = true;}

            if (square[6].getText().equals(square[4].getText())
                    && square[4].getText().equals(square[2].getText())
                    != square[6].getText().isEmpty()) {
                    win = true;}

            else{win = false;
            }

和动作代码

  public void actionPerformed (ActionEvent e) {
            //one more move has gone by, calculate player turn + player letter
            move++;
            if (move % 2 == 0) {
                    player = 1; letter = "X";
            }else{
                    player = 2; letter = "O";
            }

            playergo.setText("It is player " + player + "'s go!");

            //set square letter to player's letter, disable square so no further moves can be made there
            for (int i=0; i<=8; i++){
                    if (e.getSource() == square[i]){
                            square[i].setText(letter);
                            square[i].setEnabled(false);
                    }
            }

这里有完整的pastebin代码。提前谢谢大家!!!

共有1个答案

呼延学
2023-03-14

因为在win条件中没有使用if/else,所以您将始终检查最后一个if,如果该false,则将设置win=false

 类似资料:
  • 问题内容: 我正在尝试通过加入实体类来创建BO 我得到100个空BO,即所有属性均为null我的BO如下 ..... 当我删除aliasToBean行并遍历Object []时,我可以看到已获取正确的值,请指导我… 问题答案: 尝试显式地对项目进行别名化,以匹配Bean中的字段名称,如下所示:

  • 我有一个Spark UDF来计算列的滚动计数,精确地说是wt时间。如果我需要计算24小时的滚动计数,例如以时间2020-10-02 09:04:00进入,我需要回看直到2020-10-01 09:04:00(非常精确)。 如果我在本地运行,滚动计数UDF工作良好,并给出正确的计数,但当我在集群上运行时,它给出的结果不正确。下面是示例输入和输出 输入 预期产出 最后两个条目值在本地是4和5,但是在集

  • 我对spring batch基本上是新手。第一步,我从SFTP服务器获取一个文件,并使用JSch将其传输到本地目录。第二步,我读取本地目录中的文件,并将内容写入数据库。问题在于,在某些情况下,只执行saveDruchAltransaction(步骤2),而不执行getRemoteFile(步骤1) 配置类: 读者: 作家: 微线程: 我不知道该怎么做...我一直在尝试我从各地找到的东西。请帮忙谢谢

  • 我在查询两个Oracle数据库时遇到问题。 查询是: (NULL实际上是一个参数,传递给查询,查询可能为空,所以我缩短了查询)。 在生产数据库上,它工作正常,响应为NULL。 在dev DB上,我发现了一个错误,即TRUNC不能应用于NUMBER,需要DATE(ORA-00932)。 显然,生产数据库跳过了OR之后条件中的所有内容,开发人员执行OR之后的部分。 我确实知道通过将CAST(MY_PA

  • 代码流进入“If”循环并打印“insideif语句”。状态实际上是None,通过读取代码,它应该打印“Inside-Else语句”。我可以修改验证部分并使其在else语句中执行。但是我想知道这个条件如何返回“True”

  • 我试图创建一个堆叠条形图与chartjs。我有时间差异的时间序列,这意味着一些序列可以在一段时间内有价值,但其他序列没有价值。出于这个原因,我选择直接将x值包含在数据集中,而不是作为标签数组,但是图表不能正确渲染。 这是我的代码: 我认为问题在于x轴堆叠。 这里有一个JSFiddle来说明这个问题。 https://jsfiddle.net/1kLyyjfp/