您好我自己正在开展一个井字游戏项目。我没有上一个编程课,所以它不是功课。
我已经编写了很多其他代码,现在正在研究AI。
对于AI,我会得到它(2维数组)的副本,并检查它是否可以在移动中获胜,然后如果玩家可以,那么如果它可以在2个移动中,那么玩家等等,还有其他一些我将包括的内容。所以为了做到这一点,我想我需要传递一个数组的副本,但我不知道如何复制数组。所以这基本上是我的问题,你如何复制数组?
答案 0 :(得分:4)
您可以将数组包装到一个类中,在这种情况下,它将由默认生成的复制构造函数和赋值运算符自动复制:
enum EField { empty, cross, oh };
typedef std::array<EField, 9> TTTBoard; // C++11, or use std::tr1::array
或者手动完成:
struct TTTBoard
{
EField data[9]; // or even EField data[3][3]
};
现在你可以随意复制它:
TTTBoard b;
TTTBoard c = b;
答案 1 :(得分:3)
你可以在不关心阵列复制的情况下做一个巧妙的技巧就是为你的3x3板创建一个类型:
struct TicTac{
int board[3][3];
}
然后将其作为参数传递给你的函数。
答案 2 :(得分:1)
你有什么样的阵列? 我假设你有普通的旧学校整数数组。
当你有: int Array [3] [3];
然后将其内容复制到另一个数组,您必须循环每个元素。 这可以这样做:
int MyArray[3][3];
int CopyHere[3][3];
for(int i = 0; i < sizeof(MyArray); ++i)
{
for(int j = 0; j < sizeof(MyArray[i]); ++j)
{
CopyHere[i][j] = MyArray[i][j];
}
}
我在某处有一个旧的TicTacToe脚本,lemme寻找它。
编辑:找到它:
以下是相关主题: