精灵数组循环仅显示1个元素

安娜

试图让4朵云在屏幕上从左到右移动。执行时,我可以看到所有4个云都绘制在代码中给定的位置。但是,游戏开始后,只有一个云在屏幕上移动。其他3个从不显示。

const int NUM_CLOUDS = 4;
Sprite clouds[NUM_CLOUDS];
int position = 0;

在主要方面:

Texture textureCloud;
textureCloud.loadFromFile("graphics/cloud.png");
for (int i = 0; i < NUM_CLOUDS; i++)
{
    clouds[i].setTexture(textureCloud);
    clouds[i].setPosition(0, position);
    position += 100;
}
bool cloudsActive[NUM_CLOUDS];
for (int i = 0; i < NUM_CLOUDS; i++)
{
    cloudsActive[i] = false;
}
float cloudSpeed[NUM_CLOUDS];
for (int i = 0; i < NUM_CLOUDS; i++)
{
    cloudSpeed[i] = 0.0f;
}

for (int i = 0; i < NUM_CLOUDS; i++)
{
   if (!cloudsActive[i])
   {
      srand((int)time(0) * 30);
      cloudSpeed[i] = (rand() % 200);
      srand((int)time(0) * 30);
      float height = (rand() % 450) - 150;
      clouds[i].setPosition(-200, height);
      cloudsActive[i] = true;
   }
   else
   {
      clouds[i].setPosition(clouds[i].getPosition().x + (cloudSpeed[i] * dt.asSeconds()), clouds[i].getPosition().y);
      if (clouds[i].getPosition().x > 1920)
      {
         cloudsActive[i] = false;
      }
   }

}

匿名者1847

在您的代码中,您每次放样之前都会在发声。您可能每次都使用相同的数字作为播种对象,因为两次调用srand之间的时间不足以更改数字。通常,确定地调用rand()取决于随机种子。这意味着,如果您多次调用rand(),每次将种子设置为相同的数字,则将从rand()返回相同的数字。这使所有云都具有相同的参数,因此它们彼此重叠显示,而您只能将它们视为一朵云。要解决此问题,请仅在程序开始附近调用srand()一次。另外,正如@ColonD所说,如果您使用的是C ++ 11或更高版本,则应该使用C ++随机数:https : //en.cppreference.com/w/cpp/header/random

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

循环仅显示最后一个数组元素ActionScript3

Java JComboBox数组仅显示一个元素

在#Each 块中仅显示 1 个元素的 Svelte 组件

mongo shell:仅返回嵌套数组的1个元素

数组未消耗,但仅保留1个变化的元素

循环显示不同的数组元素

如何仅显示多个下拉值数组中的 1 个?

自动用元素列表循环填充数组,仅设置第一个元素

遍历2个数组仅循环第一个元素

在我的调试模式下,数组仅显示前14个元素,其余为显示(?)问号

仅显示存在于另一个数组中的数组元素

Firebug 显示对象数组还有 1 个元素

对于仅影响数组最后一个元素的循环,我希望我的代码对数组的每个元素起作用

对于每个循环,仅输出1个结果;对于每个循环,仅输出1个结果。尝试在数组中输出3个结果,然后停止循环

如何限制以下循环,使其仅显示第一个匹配的元素?

循环多维数组,仅获取第一个元素

for循环仅返回bash脚本中的第一个数组元素

带for循环的Javascript数组,仅返回最后一个元素

foreach循环仅输出数组中的最后一个元素

JavaScript执行循环,但仅查看数组中最后一个元素的结果

合并1个数组的元素以使用for循环创建一个新数组

在循环中只得到三个结果中的两个以显示数组元素

如何仅显示数组中的可用元素?

Foreach循环仅显示5个项目

2D数组仅显示Text函数中的最后一个元素

我的数组在C ++ Visual Studio中仅显示300个元素

如何使用for仅显示我的关联数组中的三个元素?

为什么此代码仅显示数组中的最后一个元素?

如何仅使用 Javascript 一次显示一个数组元素?