我想用动态位置显示形状。
Ex ..
A B C D
D A B E
E B D A
编码:
string names[] = {
"AB",
"ABC",
"ABCZ",
"ABCDEDF",
};
void HelloWorld::addShapes(HelloWorld* game)
{
name = names[arc4random()%4];
......
.....
CCPoint pos1[8];
for (int i = 0; i< TempNumOne; i++)
{
pos1[i]=CCPoint(disx, disy);
}
for (int a=0; a<TempNumOne; a++)
{
Filename[a]=FileMeasure[a];
int temp= arc4random()%TempNumOne;
......
bodyDef.position.Set(pos1[temp].x/32.0f, pos1[temp].y/32.0f);
.....
switch (Filename[a])
{
case 'A':
{
......
}
case 'B':
{
......
}
etc.....
}
除动态位置外,所有逻辑工作正常。
有时arc4random函数在循环语句中返回相同的值。我对两种形状有相同的位置。
我想显示不同位置的形状。
任何人都可以帮助我吗?
答案 0 :(得分:1)
你不能以这种方式随机使用。它可能返回相同的值(这是随机工作的方式)。你需要的是random_shuffle
std::string[] names = {"A", "B", "C"};
std::random_shuffle(std::begin(names), std::end(names));
//now names are in random order. just iterate over them.