【问题标题】:Checking for Win in Tic-Tac-Toe在井字游戏中检查是否获胜
【发布时间】:2012-02-15 02:21:57
【问题描述】:

您好,我今年 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 之前表示预期的主要表达式。

【问题讨论】:

  • 可能是错字,但您在 if 声明后缺少右括号。
  • 只是装饰性的——你拼错了垂直。对不起,这让我很困扰:/
  • 函数或方法声明的大括号后不需要分号。 (然而,类声明需要它们......)

标签: c++ tic-tac-toe


【解决方案1】:

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;
}

【讨论】:

    【解决方案2】:

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

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

    关于你得到的错误 -

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

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

    【讨论】:

    • 哦,好吧,我去掉了那些类型名称,但现在它说从 'char' 到 'char (*)[3]' 的转换无效
    • 对不起,我认为这可能与其他代码有关,所以我不发布这个调用的函数
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多