私は2つの可変配列を持っています。オブジェクトが配列から削除されたときにループしていて、インデックスが変わってしまい、ループしてコードを繰り返すときに 'rpoint'値と 'rsprite'値が1だけ減少する必要があります。ループ内のループ?
これは私がこれまで持っていたものですが、これは私がこれを持っている時です。
CGPoint cg1 = CGPointMake(33,33);
NSValue *cg1obj = [NSValue valueWithCGPoint:cg1];
CGPoint cg2 = CGPointMake(33,97);
NSValue *cg2obj = [NSValue valueWithCGPoint:cg2];
NSMutableArray *numberxy = [[NSMutableArray alloc] initWithCapacity:2]; int pointcount = 0;
[numberxy insertObject:cg1obj atIndex:pointcount++];
[numberxy insertObject:cg2obj atIndex:pointcount++];
CGPoint red1point = CGPointMake(red1.position.x,red1.position.y);
NSValue *red1pointobj = [NSValue valueWithCGPoint:red1point];
CGPoint red2point = CGPointMake(red2.position.x,red2.position.y);
NSValue *red2pointobj = [NSValue valueWithCGPoint:red2point];
NSMutableArray *sprites = [[NSMutableArray alloc] initWithCapacity:2]; int spritecount = 0;
[sprites insertObject:red1pointobj atIndex:spritecount++];
[sprites insertObject:red2pointobj atIndex:spritecount++];
for (int i=0; i<3;i++) {
int rpoint;
int rsprite;
do{
rpoint = arc4random() % 2;
rsprite = arc4random() % 2;
} while (rpoint == 0 && rsprite == 0);
CGPoint point = [[numberxy objectAtIndex:rpoint] CGPointValue];
CGPoint sprite = [[sprites objectAtIndex:rsprite] CGPointValue];
sprite = ccp(point.x,point.y);
CCSprite *sprite1;
if (rsprite <3) {
sprite1 = [CCSprite spriteWithFile:@"Red tile.png"];
sprite1.position = sprite;
sprite1.scale = 0.9;
[self addChild:sprite1];
}
}
しかし、すぐに私はそれが動作しないループのためにこれを追加し、iが除去されるので、ランダムな数の範囲が生成される場合、インデックス番号は配列内のオブジェクトの変更され実現されるようrpointとrsprite(ランダムなインデックス番号を取得するために使用される)の整数は、コードが繰り返されるときに1つ下がる必要がありますが、どうやってこれを行うのか分かりません。
if (sprite1.position.x == point.x && sprite1.position.y == point.y) {
[numberxy removeObjectAtIndex:rpoint];
[sprites removeObjectAtIndex:rsprite];
}
ありがとう、本当に有益でした:) – Dangermouse