我需要更快的方式来写这篇文章。
if(sprite1.position.x==33 && sprite1.position.y==33){
// some code goes here to add sprite1 to an array object at index 0
}
if(sprite2.position.x==33 && sprite2.position.y==33){
// some code goes here to add sprite2 to an array object at index 0
}
if(sprite3.position.x==33 && sprite3.position.y==33){
// some code goes here to add sprite3 to an array object a index 0
}
if(sprite4.position.x==33 && sprite4.position.y==33){
// some code goes here to add sprite4 to an array object at index 0
} ....e.t.c
if(sprite1.position.x==33 && sprite1.position.y==97){
// some code goes here to add sprite1 to an array object at index 1
}
if(sprite2.position.x==33 && sprite2.position.y==97){
// some code goes here to add sprite2 to an array object at index 1
}
我有4个阵列,每个阵列可容纳4个精灵。
我有16分和16个精灵。每个精灵都给出一个随机点,所以我必须检查每个精灵是否等于该点并且每个精灵只有一个点。然后将其添加到数组中。我在索引0处的对象处调用数组中的对象,因为我知道索引0处的对象是一个等于point1的精灵,它是(33,33)。精灵将在cctouchmoved中调用,所以我可以在那个点移动精灵,但是数组是这样我可以移动一列精灵,因为我知道它们都在正确的位置。现在我的问题是输入所有这些很长,我必须做一个循环或东西。
答案 0 :(得分:0)
代替sprite1,sprite2,sprite3等,你可以没有数组并在循环中使用sprite [x]吗?
if(sprite[x].position.x==33 && sprite[x].position.y==33){
// some code goes here
}
if(sprite[x].position.x==33 && sprite[x].position.y==97){
// some code goes here
}
答案 1 :(得分:0)
你可以在一个数组中存储指向你的16个精灵的指针,并且还有一个你需要检查它们的点数组。然后有一个嵌套的for循环进行检查。然后哪个精灵命中哪个点将由这些循环的当前计数器指示
在这个示例中,我没有使用点类型(例如CGPoint),而是使用单独的x点和y点数组。因此,您感兴趣的任何一点都应该存储在两个数组的相同元素中。例如,如果你的第7个点是(55,97),那么myXPoints[7] = 55;
和myYPoints[7] = 97;
该示例循环遍历16个精灵指针的数组。在每个循环中,它将遍历成对的点阵列。当你有一个命中时,循环计数器指示命中的位置。
免责声明:这仅显示了一种可能的技术,可能需要适应您的类型和数据结构等。
#define NUMSPRITES 16
#define NUMPOINTS 16
// These arrays are to contain the data that will be compared
int myXPoints [NUMPOINTS];
int myYPoints [NUMPOINTS];
Sprite *mySpritePointers [NUMSPRITES];
// Populate the sprite array with pointers to my sprites
mySpritePointers [0] = &mySpriteArray[0].Sprite1;
mySpritePointers [1] = &mySpriteArray[0].Sprite2;
... etc ...
mySpritePointers [15] = &mySpriteArray[3].Sprite4;
// Populate the points array
myXPoints [0] = 33;
... etc ...
myXPoints [15] = 97;
myYPoints [0] = 33;
... etc ...
myYPoints [15] = 97;
// Now check each sprite
for (int nSprite = 0; nSprite < NUMSPRITES; nSprite++)
{
// And check each point
for (int nPoint = 0; nPoint < NUMPOINTS; nPoint++)
{
// check this sprite against the x and the y points for this point
if(mySpritePointers [nSprite]->position.x == myXPoints [nPoint] && mySpritePointers [nSprite]->position.y == myYPoints [nPoint])
{
// some code goes here to add mySpritePointers [nSprite] to an array object at index nPoint
}
}
}
祝你好运!