我正在制作一个类似于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()中注释掉所有其他函数,这仍然是个问题。非常感谢您提供的任何帮助,我很难过。
答案 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”时出错。解决这个问题,一切都应该正常运行。