2011-01-24 10 views
3

どのようにすべてのステートメントを1つのifステートメントにグループ化するifステートメントを作成しますか?スプライトをグループ化する方法があるかどうか疑問に思っていたので、スプライトのいずれかが画面の上部から消えてしまった場合は、スプライトが下部に現れ、その逆もあります。すべてのステートメントを1つのifステートメントにグループ化するステートメント

私はこれを持っています。 yellow1,2,3 ...がここにスプライト

if (yellow1.position.y-33>=320) { 
    yellow1.position = ccp(yellow1.position.x,33); 
} 
if (yellow1.position.y+33<=0) { 
    yellow1.position = ccp(yellow1.position.x,287); 
} 
if (yellow2.position.y-33>=320) { 
    yellow2.position = ccp(yellow2.position.x,33); 
} 
if (yellow2.position.y+33<=0) { 
    yellow2.position = ccp(yellow2.position.x,287); 
} 
if (yellow3.position.y-33>=320) { 
    yellow3.position = ccp(yellow3.position.x,33); 
} 
if (yellow3.position.y+33<=0) { 
    yellow3.position = ccp(yellow3.position.x,287); 
} 
if (yellow4.position.y-33>=320) { 
    yellow4.position = ccp(yellow4.position.x,33); 
} 
if (yellow4.position.y+33<=0) { 
    yellow4.position = ccp(yellow4.position.x,287); 
} 
if (yellow5.position.y-33>=320) { 
    yellow5.position = ccp(yellow5.position.x,33); 
} 
if (yellow5.position.y+33<=0) { 
    yellow5.position = ccp(yellow5.position.x,287); 
} 
if (yellow6.position.y-33>=320) { 
    yellow6.position = ccp(yellow6.position.x,33); 
} 
if (yellow6.position.y+33<=0) { 
    yellow6.position = ccp(yellow6.position.x,287); 
} 
if (yellow7.position.y-33>=320) { 
    yellow7.position = ccp(yellow7.position.x,33); 
} 
if (yellow7.position.y+33<=0) { 
    yellow7.position = ccp(yellow7.position.x,287); 
} 
if (yellow8.position.y-33>=320) { 
    yellow8.position = ccp(yellow8.position.x,33); 
} 
if (yellow8.position.y+33<=0) { 
    yellow8.position = ccp(yellow8.position.x,287); 
} 

ことは、これまでのところ、私のループです:

for (int i=0;i<16 ; i++) { 
    if (((CCSprite *)[c1array objectAtIndex:i]).position.y-((CCSprite *)[c1array objectAtIndex:i]).contentSize.height>320) { 
     ((CCSprite *)[c1array objectAtIndex:i]).position = ccp(((CCSprite *)[c1array objectAtIndex:i]).position.x,37); 
    } 
    if (((CCSprite *)[c1array objectAtIndex:i]).position.y+((CCSprite *)[c1array objectAtIndex:i]).contentSize.height<0) { 
     ((CCSprite *)[c1array objectAtIndex:i]).position = ccp(((CCSprite *)[c1array objectAtIndex:i]).position.x,253); 
    } 
} 

答えて

0

あなたがリストをArrayListの中で、あなたのスプライトを入れて、ループができます。これは、同じ量のコードを実行していることを意味しますが、ランタイムはその優れた点を実行し、コードはずっと整頓されます。

+0

ちょっと男はあなたが私は後でループを入れている投稿jdmichal上記の例のコーディングのiphoneの方法で私を助けることができますcctouchmovedで私はどこに 'リストを作成'を配置するか分からない。ヘッダーファイルまたはスーパーファイルでメインファイルに入りますか?ありがとう – Dangermouse

+0

スプライトとスプライトでエラーが発生しました。どのスプライトが数えられるかをコードがどのように知っていますか?スプライト名を書く場所はどこですか? – Dangermouse

+0

エラーは何ですか? Spriteをデータ型として実際に使用することはできません。 jdmichalが言ったように、それはちょうど擬似コードです。あなたが望むのは、cocos2dの最新バージョンを使用している場合はCCSpriteです。また、NSArrayより効率的に動作するはずのCCArrayクラスを調べることもできます。 NSArrayまたはCCArrayを割り当てる方法を知っていますか?私はあなたの言葉に基づいて、あなたがそうでないかもしれないように、失礼を意味するものではありません。 –

4

ループは何ですか?しかし、まず、データを配列などの順次データ構造に構造化する必要があります。次に、配列の各要素をループします。

私はiPhoneプログラミングに精通していないですが、ここでは一般的な擬似コードです:

// Create the list 
const int SPRITE_COUNT = 8; 
Sprite[] sprites = new Sprite[SPRITE_COUNT]; 
for(int i = 0; i < SPRITE_COUNT; ++i) 
    sprites[i] = new Sprite(); 

// Later, check for sprites outside 
for(int i = 0; i < SPRITE_COUNT; ++i) 
{ 
    if ((sprites[i].position.y + 33) <= 0) 
     ccp(sprite.position.x, 287); 
    if ((sprites[i].position.y - 33) >= 320) 
     ccp(sprite.position.x, 33); 
} 
+0

コードをありがとう、なぜ私は配列を介してループについて考えていないのか分からない:) – Dangermouse