弹跳游戏显示多个球

时间:2013-04-01 21:10:25

标签: c command-line for-loop

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

#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'。

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

3 个答案:

答案 0 :(得分:4)

您要分配而不是在此比较:

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

因此,只要w非零,b.x=w就会被评估为 true 。它应该是

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

答案 1 :(得分:2)

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

中忘记了“=”

因此b.x = w将始终评估为True

答案 2 :(得分:2)

最有可能是你们阵容中的拼写错误:

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

您输入“b.x = w”而不是“b.x == w”时出错。解决这个问题,一切都应该正常运行。