使用C ++ rand()获取随机方向(上/下/左/右) - 总是起床

时间:2015-05-29 22:35:05

标签: c++ random console srand

我正在制作基于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表示)。虽然我成功地随机选择了碎片的位置,但此功能始终垂直设置碎片。他们总是上去。谁能告诉我为什么?

3 个答案:

答案 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