使用 C++ rand() 获取随机方向 (up/down/left/right) - 总是起床
Using C++ rand() to get random directions (up/down/left/right) - always getting up
我正在制作基于 C++ 文本的 Battleship 游戏。我使用 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之间的数字,returns一个方向(用一个字符表示)取决于这个数字。虽然我成功地随机选择了棋子的位置,此功能始终将棋子垂直设置。他们总是往上走。谁能告诉我为什么?
您的问题似乎在语句 x = 1
中,您应该更改 x == 1
,因为赋值始终为真。
希望对您有所帮助!
试试这个,避免输入错误 ==
;-) :
char randDirection()
{
return "udlr"[rand() % 4];
};
您的问题出现在每个 "if" 上,您正在做作业,而不是测试。
此外,在测试中,赋值总是 return 赋值的结果。
例如:
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
我正在制作基于 C++ 文本的 Battleship 游戏。我使用 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之间的数字,returns一个方向(用一个字符表示)取决于这个数字。虽然我成功地随机选择了棋子的位置,此功能始终将棋子垂直设置。他们总是往上走。谁能告诉我为什么?
您的问题似乎在语句 x = 1
中,您应该更改 x == 1
,因为赋值始终为真。
希望对您有所帮助!
试试这个,避免输入错误 ==
;-) :
char randDirection()
{
return "udlr"[rand() % 4];
};
您的问题出现在每个 "if" 上,您正在做作业,而不是测试。 此外,在测试中,赋值总是 return 赋值的结果。 例如:
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