0

我正在制作一个显示在命令提示符下的类似乒乓球的游戏,但遇到了问题。我有一个用于显示比赛场地和球位置的函数:

#include "std_lib_facilities.h"
#include "ball.h"
#include "field.h"

void display (field f, ball b)
{
    cout << "\n\n\n\n\n\n\n\n";
    for (int h = 0; h < 10; ++h)//
    {
        cout << "\n\t|";
        for (int w = 0; w < 20; ++w)
        {
            cout << "  ";
            if (b.x = w && b.y == h) cout << "o";
            else cout << ".";
        }
    }
    cout << "\n\n\n\n\n\n\n\n";
}

当我运行程序时,该字段正确显示,但不是一个球,而是一整行(正确的行)被“o”填充。

因此,如果球的坐标为 (5, 5),则整个第 5 行将是 'o's。

我已经尝试在 main() 中注释掉所有其他函数,但这仍然是一个问题。您能提供的任何帮助将不胜感激,我很难过。

4

3 回答 3

4

您在这里分配而不是比较:

if (b.x = w && b.y == h) cout << "o";
//      ^

所以只要w是非零的,b.x=w就被评估为true。它应该是

if (b.x == w && b.y == h) cout << "o";
//      ^^
于 2013-04-01T21:18:13.893 回答
2

你忘了一个“=” if (b.x = w && b.y == h) cout << "o";

因此 bx = w 将始终评估为 True

于 2013-04-01T21:18:27.990 回答
2

很可能是您的行中的错字:

if (b.x = w && b.y == h) cout << "o";

说“bx = w”而不是“bx == w”会出错。修复它,一切都应该运行良好。

于 2013-04-01T21:19:24.717 回答