tictactoe和复制数组

时间:2012-03-04 22:14:13

标签: c++

您好我自己正在开展一个井字游戏项目。我没有上一个编程课,所以它不是功课。

我已经编写了很多其他代码,现在正在研究AI。

对于AI,我会得到它(2维数组)的副本,并检查它是否可以在移动中获胜,然后如果玩家可以,那么如果它可以在2个移动中,那么玩家等等,还有其他一些我将包括的内容。所以为了做到这一点,我想我需要传递一个数组的副本,但我不知道如何复制数组。所以这基本上是我的问题,你如何复制数组?

3 个答案:

答案 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寻找它。

编辑:找到它:

http://pastebin.com/Xp5iT2b0

以下是相关主题:

http://forum.sa-mp.com/showthread.php?t=259549