在随机位置产卵怪物
Spawning monsters at random locations
std::string monsterNames[2] {"Weezer", "Leppin"};
for (int vecID = 1; vecID < 5; ++vecID)
{
if(newmonster.monsterData[vecID-1].posX != newmonster.monsterData[vecID].posX && newmonster.monsterData[vecID-1].posY != newmonster.monsterData[vecID].posY)
{
int randIndex = rand()% 2;
int randPosX = rand()% 3;
int randPosY = rand()% 3;
newmonster.CreateMonster(monsterNames[randIndex], randPosX, randPosY);
newmonster.monsterData.push_back(newmonster);
}
else
{
continue;
}
}
是的,由于IF语句,此代码不运行。直到语句之后才创建怪物,因此数组索引不超出范围。基本上,该程序随机将怪物名称和坐标随机,并且所有这些都可以很好地工作,而无需if语句。但是,我需要检查一个位置是否已经存在怪物,如果不存在,请重新运行循环。如何以更明智的方式进行此操作?XD如果我没有for循环,那么随机数将始终相同。
我将提出下一个解决方案,您可以将if语句代码提取到新功能" GeneratorAndommonster"中,因此您可以在For Bucle之前调用一次,并在一个中减少迭代,通过这种方式,您可以确保Newmonster数组已经有一个怪物,并且IF语句不会破坏您的代码。
我希望此解决方案对您有所帮助。
br。
您的支票是错误的。如果碰巧最后两个怪物位于同一位置,请停止制作怪物。当然,这不是您想要的。
在您的位置,我会运行一段循环直到newmonster.monsterData.size() == 5
。在循环中,我只有在已经创建的怪物共享位置的 none 的情况下,才会进行随机坐标并添加怪物。为此,您需要一个内部循环。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 如何选择在 csv 文件中输出的位置
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 如何在特定位置追加 json 文件
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 在随机位置产卵怪物