检查Tic-Tac-Toe的胜利

时间:2012-02-15 02:21:57

标签: c++ tic-tac-toe

您好我17岁,正在尝试学习如何编码。我在调试这部分代码时遇到了问题,并希望得到一些帮助。

bool checkifwin(char grid[3][3], char player)
{
    if (checkverticle(char grid[3][3], char player) 
        || checkhorizontal(char grid[3][3], char player)
        || checkdiagonal( grid[3][3], player) 
       return true;
    else
       return false;
};

它表示在char之前预期的primary-expression。

3 个答案:

答案 0 :(得分:4)

checkverticle()是对函数的调用,而不是声明,所以你不需要“char”。

bool checkifwin(char grid[3][3], char player)
{
    if ( checkverticle(grid, player) || 
         checkhorizontal(grid, player) || 
         checkdiagonal( grid, player) return true;
    else return false;
};

只是一些编码建议。在我看来:

bool func()
{
    if (expr)
        return true;
    else
        return false;
}

不是很棒的风格。我建议将其重构为:

bool func()
{
    bool result = false; // This just makes it clear the expected default.
    // You could even go as far as
    // bool result = expr  or event return expr; - although I suggest sticking with a
    // variable in case you need to debug.
    result = expr; // e.g. result = checkVert() || checkHoriz() || checkDiag();
    return result;
}

答案 1 :(得分:2)

调用函数时无需提供类型名称。

if (checkverticle(char grid[3][3], char player) // Remove char here and in other cases

进一步了解错误 -

checkverticle( grid[3][3] ... )

此处grid[3][3]为您提供该索引处的字符。您真正想要传递的是grid本身,正如其他人所建议的那样。当然,要警惕有效的数组索引。

答案 2 :(得分:1)

您正在尝试将类型声明作为参数传递。试试这个:

bool checkifwin(char grid[3][3], char player)
{
  return checkverticle(grid], player) || 
    checkhorizontal(grid, player) || 
    checkdiagonal(grid, player;

};
相关问题