2

我正在尝试使用 c++ 创建一个简单的井字游戏作为一些家庭作业的一部分,但在绘制棋盘时遇到了困难。我正在尝试使用连字符(破折号)绘制一个基本的板,例如:

- - -
- - -
- - -

但我收到错误“'int' 类型的参数与'char' 类型的参数不兼容”。有人可以帮我指出正确的方向吗?

我的代码如下:

char empty = '-';

int size = 9;
int width = 3;

void showBoard(char board[]);

void showBoard(char board[])
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < width; j++)
        {
            board[i] = empty;

          cout << board << endl;
        }

        cout << endl;
    }
}

int main()
{
    showBoard(10);
}
4

3 回答 3

2

你的函数是期待char[]的,但你正在传递int。这些类型显然是不兼容的。

这应该是兼容的:

char board[] = "123456789";
showBoard(board);
于 2013-04-03T03:32:23.037 回答
2

您应该考虑将 showBoard 函数拆分为 2 个例程:initializeBoard 和 showBoard。

您的 initializeBoard 例程应如下所示:

void initializeBoard(char board[])
{
    for (int i = 0; i < size; i++)
    {
         board[i] = empty;
    }
 }

showBoard 例程是:

void showBoard(char board[])
{
    for (int i = 0; i < size/width; i++)
    {
        for (int j = 0; j < width; j++)
        {

         cout << board[i*width +j] << ' ';
        }

        cout << endl;
    }
}

最后你像这样设置顶部:

char board[9];

initializeBoard(board);
showBoard(board);
于 2013-04-03T04:22:32.617 回答
1

您可能想要char tiles[] = "---------"; showBoard(tiles);而不是showBoard(10).

还,

board[i] = empty;

错位为showBoard()。它应该在其他地方(例如创建另一个函数)。否则showBoard()就会让那些阅读代码的人感到负担过重和困惑。更好的是,考虑一个Board带有show()方法的类。

于 2013-04-03T03:38:01.340 回答