0

ゲームプレイの現在のスコアとストーリーのベスト スコアを画面に表示したいと考えています。仕事ですが、ゲームを再開するたびに、現在のスコアが最高のスコアよりも低くても、最高のスコアが変わります。

CCLabelTTF *punteggio;
    NSString *stringa;
    NSString *stringa2;
    CCLabelTTF *punteggioMAX;

    int score;
    int scoreMAX;

スコアを保存する方法、スコアを追加する方法、ゲーム終了時にスコアをリセットする方法があります。

-(void)aum{
    score++;
    stringa = [NSString stringWithFormat:@"Punteggio: %d",score];
    [punteggio setString:stringa];
}



-(void)res{
    score=0;
    stringa = [NSString stringWithFormat:@"Punteggio: %d",score];
    [punteggio setString:stringa];
}

-(void)sal{
    NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
    [ud setInteger:score forKey:@"Punteggio"];
    [ud synchronize];
}

-(void)sal2{
    NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
    [ud setInteger:scoreMAX forKey:@"Punteggio"];
    [ud synchronize];
}

そして、init メソッドでは:

 NSString *fontName = @"score.fnt";
        stringa = [NSString stringWithFormat:@"Punteggio: %d",score];
        punteggio = [CCLabelBMFont labelWithString:stringa fntFile:fontName];
        punteggio.scale = 0.4;
        punteggio.position=ccp(40,altezzaSchermo - 15);
        [self addChild:punteggio];
        NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
        score=[ud integerForKey:@"Punteggio"];



        stringa2 = [NSString stringWithFormat:@"Best Score: %d",score];
        punteggioMAX = [CCLabelBMFont labelWithString:stringa2 fntFile:fontName];
        punteggioMAX.scale = 0.4;
        punteggioMAX.position=ccp(40,altezzaSchermo - 35);
        [self addChild:punteggioMAX];
        scoreMAX=[ud integerForKey:@"punteggioMAX"];


 if(score>scoreMAX) scoreMAX = score;

        [self res];

ありがとうございました。

4

1 に答える 1

0

保存していないpunteggioMAXため、ユーザーのデフォルトから取得すると 0 が返されます。

確認が簡単: ブレークポイントを設定し、変数を確認します。

于 2013-03-28T22:01:35.263 に答える