我正在尝试在井字游戏中嵌入一个非常基本的 AI,但我在使用数组来识别最合适的方格时遇到了问题。
我有一个数组表示当前状态下的游戏网格,另一个表示如果某个方格被认领时的样子。
人工智能不断做出奇怪的决定,所以我决定让它在某些里程碑报告各种信息。
string[,] currentGrid;
string[,] hypotheticalGrid;
MessageBox.Show(currentGrid);
hypotheticalGrid = currentGrid;
hypotheticalGrid[x, y] = "O";
MessageBox.Show(currentGrid);
请记住,上面是实际代码的非常简化的版本。
数组沿线分配值,消息框设置为将 currentGrid 显示为其包含的值的序列。
除了消息框之间的代码外,一切正常。
问题是两个消息框显示不同的结果,即使后者是前者的副本,并且在两者之间的空间中没有指定对 currentGrid 的更改。
中间的两行是直接从源代码复制的,应该只影响假设的网格。应该很明显,这些线应该重置假设的网格,然后在有问题的正方形上添加一个“O”。
但是,由于某种原因,“O”也被放置在当前网格中。
我究竟做错了什么?