私はフランス人であることを警告したいだけなので、私の将来の間違いについて申し訳ありません. 私はスネーク ゲームをプログラミングしています (ご存知のとおり、リンゴを食べるとスネークが長くなります)。私はcocos2dで作業しており、基本的に、ゲームは1つのことを除いて終了です。ヘビの衝突管理を実装するだけで、それは自分の体です。そのとき、私の関数 GameOver が呼び出されます:
-(void)gameOver{
for (NSUInteger i=0; i < [body count]; i++)
{
[self removeChild:((SnakePart*)body[i]) cleanup:YES];
}
[self unscheduleUpdate];
[self removeChild:apple cleanup:YES];
[self removeChild:scoreLabel cleanup:YES];
CCTransitionRotoZoom *transition = [CCTransitionSlideInB transitionWithDuration:1.0 scene: [EndGameLayer scene]];
[[CCDirector sharedDirector]replaceScene:transition];
}
アプリケーションのどこにバグがあるかを確認するためにいくつかのブレークポイントを設定しましたが、そこにはバグがありません。実際、直後に呼び出される EndGameLayer の init にバグがあるようです。初期化は次のとおりです。
-(id)init{
if( (self=[super initWithColor:ccc4(0, 0, 0, 255)]) ) {
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite * background = [CCSprite spriteWithFile:@"Game Over.jpg"];
background.position = CGPointMake(winSize.width/2, winSize.height/2);
CCMenuItemFont *boutonRecommencer = [CCMenuItemFont itemWithString:@"Restart" target:self selector:@selector(restart)];
boutonRecommencer.fontSize = 28;
boutonRecommencer.fontName = @"Helvetica";
CCMenuItemFont *boutonMainMenu = [CCMenuItemFont itemWithString:@"Main Menu" target:self selector:@selector(mainMenu)];
boutonMainMenu.fontSize = 28;
boutonMainMenu.fontName = @"Helvetica";
CCMenu *menuEcranFin = [CCMenu menuWithItems:boutonRecommencer, boutonMainMenu, nil];
[menuEcranFin setPosition:ccp(winSize.width/2 ,winSize.height/2 - 65)];
[menuEcranFin alignItemsInRows:[NSNumber numberWithInt:2], nil];
[menuEcranFin alignItemsHorizontallyWithPadding:40];
[self addChild:background];
[self addChild:menuEcranFin];
}
return self;
}
繰り返しますが、このコード内にいくつかのブレークポイントを配置しましたが、アプリは問題なくすべてを通過します。問題は self を返すときにあるようですが、私にはわかりません。また、このバグは毎回表示されるわけではありません。ときどきゲームオーバー画面が表示され、ゲームを再起動できますが、試行後にバグが再発します。ほとんどの場合、gameOver が表示されるのは 1 回目か 2 回目です。どうもありがとうございました。
新しい 自分自身との衝突があり、エラーが次の場合にバグが表示されます。スレッド 1: EXC_BAD_ACCESS (コード = 1、アドレス = 0x800000008)。範囲外の配列に到達したときに、すでにそのようなことを見てきました...しかし、この場合、私は本当に知りません。ゾンビ オブジェクトを有効にすると、次のエラーが表示されます: スレッド 1: EXC_Breakpoint (コード=EXC=l386_BPT、サブコード = 0x0)。