1

我创建了一个连接四,试图实现删除功能,添加到特定列的最低行。这是董事会的初始化

Board::Board()
{
    for(int i=0;i<8;i++)
        for(int j=0;j<8;j++)
            place[i][j] = EMP;  // EMP is a const char = '-'

    cout << "Initalized.\n";
}

由于某种原因,这段代码一直运行到 i = 1,然后将 place[1][col] 设置为 * 但是当我去显示这个时,它会在数组底部显示 *,所以 place[7][科尔]。

同样 this->place 和 place in the cout 在开始时永远不会给我应该的'-'输出。

int Board::add(int player, int col)
{
    char piece;
    col--;  // Dealing with array starting at 0, not 1
    (player==1) ? piece = P1: piece = P2;   // Character defining players piece
    int i;

    for (i = 7; i >= 0; i--)
    {

        cout << "this - " << this->place[i][col] << endl;
        cout << "place - " << place[i][col] << endl;
        if(place[i][col] == EMP)
        {
            cout << "Empty looks like " << place[i][col] << "\ti: " << i << endl;
            place[i][col] = piece;
            system("pause");
            return i;
        }else
        {
            cout << "not EMP - " << place[i][col] << endl;
            system("pause");
        }
    }

    return 0;
}
4

2 回答 2

2

您将 char 传递给您的 int 函数,它将数字转换为 char 变量(给您垃圾)。我稍微改写了函数,一切似乎都运行良好。

int Board::add(int player, char col)
{
    char piece;
    int Num;
    Num = atoi(&col);
    cout << Num << endl << endl;
    Num--;  // Dealing with array starting at 0, not 1
    (player==1) ? piece = P1: piece = P2;   // Character defining players piece
    int i;

    for (i = 7; i >= 0; i--)
    {

        cout << "this - " << this->place[i][Num] << endl;
        cout << "place - " << place[i][Num] << endl;
        if(place[i][Num] == EMP)
        {
            cout << "Empty looks like " << place[i][Num] << "\ti: " << i << endl;
            place[i][Num] = piece;
            return i;
        }else
        {
            cout << "not EMP - " << place[i][Num] << endl;
        }
        system("pause");
    }

    return 0;
}

希望这可以帮助。

于 2012-10-25T20:49:51.033 回答
0

一些想法:

不要delete place,你从来没有用来new获取内存。
像这样使用条件运算符更惯用:piece = (player==1) ? P1: P2;

初始化、添加和显示片段的代码在这里非常有效:http: //codepad.org/QIWHagMk

您能否更具体地提出您的要求或显示一个更小的代码片段来演示您所看到的问题?

于 2012-10-25T19:42:15.330 回答