NSNumbers の NSMutableArray があります。私は配列を列挙し、そこにある「1」ごとに、配列内の位置を確認し、いくつかのことを行う必要があります。これは私がそれを行う方法です:
for (NSNumber *number in fieldArray) {
int temp = [number intValue];
if (temp != 0)
{
if (temp == 1)
{
switch ([fieldArray indexOfObject:number]) {
case 0:
{
CCSprite *x = [CCSprite spriteWithFile:@"x.png"];
x.position = ccp(53,265);
[self addChild:x];
}
break;
case 1:
{
//this code never gets called
}
配列の位置 0 に「1」があるため、switch ステートメントは 1 以外の場所には移動しません。どうすれば修正できますか? 配列セル内の物の位置を確認するには?
なぜこれが必要なのか、なぜこのようにするのか。三目並べゲームを作っています。フィールドを 9 の容量で NSMutableArray に格納します。したがって、配列内の各数値はプレイ フィールドのセルです。セルが空の場合、配列はその位置にゼロを保持し、x がある場合 - 配列に 1 つの値があり、セルにゼロがある場合 - 配列は 2 を保持します。描画時間が来ると、配列を反復処理して何を確認します値がわかりました。値が 0 の場合は何もしませんが、1 の場合は特定の位置に描画します。これを行う簡単な方法があるかもしれません。問題を解決する方法がない場合は、その方向に向けてください。
編集: 実用的な解決策は、列挙を通常のループに変更することでした。
for (int i = 0; i < 9; i++) {
int temp = [[fieldArray objectAtIndex:i] intValue];
if (temp == 1)
{
switch (i) {
case 0:
{
CCSprite *x = [CCSprite spriteWithFile:@"x.png"];
x.position = ccp(53, 265);
[self addChild:x z:1];
break;
}
case 1:
{
CCSprite *x = [CCSprite spriteWithFile:@"x.png"];
x.position = ccp(159, 265);
[self addChild:x z:1];
break;
}