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

为什么一个新的对象会影响当前的对象?

贺立果
2023-03-14

这是我在班级游戏板。在这节课中,我尝试制作一个GameTree来返回这个棋盘上所有可能的下一步动作的列表。当这部分代码运行时,它会影响游戏板,因为它包含了这段代码,导致所有的移动实际上都是在游戏板上进行的,在游戏板上,我只是尝试用一个移动来返回板。下面是Gameboard中的代码:

for(int i = 1; i < 7; i++)
{
    for(int j = 1; j < 7; j++)
    {
        //if valid move, add a board with this move to the list
        if(isValidMove(i, j))
        {
            GameBoard tempBoard = new GameBoard(slots);
            //printout to make sure both object references are different, which they always are
            System.out.println("this board: " + this + " temp: " + tempBoard);
            tempBoard.makeMove(2, i, j);    //use 2 as it is for the AI's move
            tempBoard.rotateA();
            tempBoard.setLastMove(i + " " + j + " " + "A");
            System.out.println("Board with move " + tempBoard.getLastMove());
            tempBoard.printBoard();
            returnList.add(tempBoard);
        }
    }
}

我不明白为什么这不是简单地创建一个新的游戏板对象,播放有效的移动,并将其添加到列表。相反,在这个for循环结束时,游戏板将充满所有可能的移动。

Edit:Slots是GameBoard类的私有int[][]。

共有1个答案

欧金鹏
2023-03-14

最可能的问题是新的游戏板使用插槽,而旧的游戏板也使用插槽。所以当新的游戏板在插槽上做一些事情时,它会改变插槽,因为旧的游戏板也会使用插槽,它的状态也会改变。

我不知道插槽的结构,但我认为您也应该为新游戏板创建一个新的插槽对象

 类似资料:
  • 问题内容: 我有一个嵌套的字典,我们称它为字典d。该词典的键是一个整数,每个键的值是另一个词典。我正在python 2.7上尝试一个简单的代码来更新一个外键的值,但似乎它正在更新外键的ALL的值。 希望这些代码将使其更易于理解。这是我的意见。 然后是输出: 您会看到,我只为d [0] [‘mean’]分配了‘1’,但是d [1] [‘mean’]也有所更新。如果我增加d键的数量,它将只更改所有d键

  • 扫描器实例如何阻止BufferedWriter写入文本文件?我没在考虑什么?任何帮助/反馈将非常感谢!

  • 下面是vb中的一个特殊情况。我搞乱了SuppressKeyPress属性,发现了一些奇怪的东西。 形势 假设我有一个名为的输入框,我希望名称不带任何数字,当插入数字时,会弹出一个MessageBox并报告错误。 在这种情况下,由于某种奇怪的原因,如果我键入一个数字,它将被写入文本框中,尽管我抑制了按键。 我发现,如果我删除MsgBox行,数字将不会出现在输入框中。 问题 这是怎么回事?为什么Msg

  • 我是css的新手,我正在尝试css注入,我在浏览器上更改主页的属性。 我有一个元素b,它有一个祖先a(不是直接的,中间有几个步骤)。 我读过很多次,通过在类之间使用空格,例如,您可以选择属于a类对象的后代的所有b类对象。 因此,注入会按预期将我的对象的颜色更改为白色。但是只使用不是,这一点我不理解,因为它应该影响b类的所有对象,不管它们的祖先是什么?

  • 为什么以下未有效使用的行(在方法中:getAllDefinedVars)会对最终结果产生影响: List collect=AllVars.Stream().Filter(v->false).collect(Collectors.ToList()); 如果我删除整个方法和调用此方法的一行代码(generateOneSetOfBools中的第一行),我最终会得到另一个结果。 如果... 提到的行对列表

  • 问题内容: 我试图了解变量如何在python中工作。说我有一个对象存储在变量中: 如果我分配给,则它们都指向同一个对象: 但是,如果我重新分配或,那就不再正确了: 这两个变量现在具有不同的值: 我不明白为什么变量现在不同。为什么不再是真的?有人可以解释发生了什么吗? 问题答案: Python具有引用 对象的 名称 。对象与名称分开存在,名称与它们引用的对象分开存在。 __ 在为“名称分配名称”时,