我正在制作基于C ++文本的战舰游戏。我使用rand()函数随机放置计算机的船只。我在main()的开头给种子生成器播种一次,下面一行:
srand(static_cast<unsigned>(time(0)));
我后来使用rand()函数选择每艘船将要去的地方。 (船的一端将开始的坐标)。然后我在下面的函数中使用rand(),它决定了它们的扩展方向(取决于船的长度):
char randDirection()
{
int randNumber = rand();
int x = (randNumber % 4) + 1;
if (x = 1)
return 'u';
else if (x = 2)
return 'd';
else if (x = 3)
return 'l';
else
return 'r';
}
随机获取1到4之间的数字,并根据数字返回方向(由char表示)。虽然我成功地随机选择了碎片的位置,但此功能始终垂直设置碎片。他们总是上去。谁能告诉我为什么?
答案 0 :(得分:6)
您的问题似乎出现在x = 1
语句中,您应该按x == 1
进行更改,因为对齐始终为真。
希望这有帮助!
答案 1 :(得分:4)
试试这个,以避免误导==
;-):
char randDirection()
{
return "udlr"[rand() % 4];
};
答案 2 :(得分:4)
你的问题出在每一个&#34;如果&#34;,你进行了分配,而不是测试。 此外,在测试中,分配将始终返回分配的结果。 例如:
if (x = 0)
// will never be here because 0 is false in a test
else if (x = 42)
// will always end up here
else
// will never be here