2011-07-13 13 views
0

を発行します。applicationWillTerminate/ApplicationDidEnterBackgroundは、私はこれを解決するためにあなたの助けが必要

私は/負荷gamestate Save Game State Tutorialを保存する方法についてのチュートリアルを発見し、私は自分自身で非常によくやったが、私は捕まってしまったと思います。

このすべての最初には、私がバックグラウンドにゲームを動かす時に、ゲームを終了時に保存するために必要なものです。

* Playerscore

*ハイスコア

*レベル

*時間

*グリッドとその上にレンガ(グリッドは6×6で、私はあることに35個のレンガを持っていますグリッド内で移動可能)//このパーツを保存/ロードする方法を知らない

*ルビーの量

*音楽ボタンとSFXボタンがオンまたはオフの場合の設定状態//このパーツの保存/ロード方法がわからない

*音楽の状態は、この部分を保存/ロードする方法がわからない場合

Ready、Set、Go画像で一時停止状態でゲームをロードする方法がわかりませんユーザーが中断した場所から開始する前に表示されます。 (私のUIApplicationDelegateでapplicationDidEnterBackgroundとapplicationWillTerminateに接続する方法は分かりません。保存部分と同じです)

次に、保存されたgamestateがあるかどうかをメインメニューにして、ゲームを続けてください。

次のコードは、私がmainmenu.mファイルで、私のgameview.mファイルでやった方法を示しています。あなたにもgamecontrollerを見たい場合は、私に教えてください...

mainmenu.h //ゲームコントローラ GameController * sharedGameController。

mainmenu.m

//The game begins either by continue or by resetting the gamestate 
-(IBAction)start{ 

    NSLog(@"Start"); 

    newgame.hidden = NO; 

    if(sharedGameController.resumedGameAvailable == YES){ 
     //IF there is a gamestate saved then activate the continue button 
     continuegame.hidden = YES; 
     continuegame.alpha = 1.0; 
     continuegame.enabled = YES; 
    } 
    else{ 

     continuegame.hidden = NO; 
     continuegame.alpha = 0.5; 
     continuegame.enabled = NO; 

    } 
    korridor1.hidden = NO; 
    fackla.hidden = NO; 
    Start.hidden = YES; 
    option.hidden = YES; 
    howtoplay.hidden = YES; 
    SFXimage.hidden = YES; 
    Musicimage.hidden = YES; 
    back.hidden = NO; 

} 

//Continue previous game 
-(IBAction)ContinueGame{ 

    [audio stop]; 
    audio.numberOfLoops = 0; 
    [audio release]; 
    NSLog(@"Continue"); 

    back.hidden = YES; 
    newgame.hidden = YES; 
    continuegame.hidden = YES; 
    korridor1.hidden = NO; 
    fackla.hidden = YES; 
    Start.hidden = YES; 
    option.hidden = YES; 
    howtoplay.hidden = YES; 
    SFXimage.hidden = YES; 
    Musicimage.hidden = YES; 
    [UIView beginAnimations:@"korridor_1.png" context:nil]; 
    [UIView setAnimationDuration:1]; 
    korridor1.transform = CGAffineTransformMakeScale(13,13); 
    korridor1.alpha = 1.0f; 
    [UIView commitAnimations]; 


    //The Game begins 
    [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(GameView) userInfo:nil repeats:NO]; 
} 

gameview.m

//Load the saved gamestate 
- (void)loadGameState { 

    // Set up the file manager and documents path 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; NSMutableData *gameData; 
    NSKeyedUnarchiver *decoder; 
    NSString *documentPath = [documentsDirectory stringByAppendingPathComponent:@"gameState.dat"]; 
    gameData = [NSData dataWithContentsOfFile:documentPath]; 
    decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData]; 
    NSLog(@"INFO - GameScene: Loading saved game duration."); 
    //timeSinceGameStarted = [[decoder decodeObjectForKey:@"timeSinceGameStarted"] floatValue]; 
    NSLog(@"INGO - GameScene: Loading saved game score."); 
    playerscore = [[decoder decodeObjectForKey:@"playerscore"] floatValue]; 
    NSLog(@"INGO - GameScene: Loading saved high score."); 
    highscore = [[decoder decodeObjectForKey:@"highscore"] floatValue]; 
    NSLog(@"INGO - GameScene: Loading saved level."); 
    level = [[decoder decodeObjectForKey:@"Level"] floatValue]; 
    NSLog(@"INGO - GameScene: Loading saved amount of rubies."); 
    totalrubies = [[decoder decodeObjectForKey:@"totalrubies"] floatValue]; 
    NSLog(@"INFO - GameScene: Loading game time data."); 
    [decoder release]; 
} 

//Saving the current gamestate 
-(void)saveGameState { 

    NSLog(@"Saving game state"); 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *gameStatePath = [documentsDirectory stringByAppendingPathComponent:@"gameState.dat"]; 

    NSMutableData *gameData; 
    NSKeyedArchiver *encoder; 
    gameData = [NSMutableData data]; 
    encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:gameData]; 

    // Archive the games timer settings 
    NSNumber *savedGameStartTime = [NSNumber numberWithFloat:totalSeconds]; 
    //NSNumber *savedTimeSinceGameStarted = [NSNumber numberWithFloat:timeSinceGameStarted]; 
    // Archive the players score 
    NSNumber *savedPlayerScore = [NSNumber numberWithFloat:playerscore]; 
    // Archive the games high score 
    NSNumber *savedHighScore = [NSNumber numberWithFloat:highscore]; 
    // Archive the current game level 
    NSNumber *savedcurrentlevel = [NSNumber numberWithFloat:level]; 
    // Archive the total amount of rubies 
    NSNumber *savedTotalRubies = [NSNumber numberWithFloat:totalrubies]; 

    [encoder encodeObject:savedGameStartTime forKey:@"gameStartTime"]; 
    //[encoder encodeObject:savedTimeSinceGameStarted forKey:@"timeSinceGameStarted"]; 

    [encoder encodeObject:savedPlayerScore forKey:@"playerscore"]; 
    [encoder encodeObject:savedHighScore forKey:@"highscore"]; 

    [encoder encodeObject:savedcurrentlevel forKey:@"Level"]; 

    [encoder encodeObject:savedTotalRubies forKey:@"totalrubies"]; 

    // Finish encoding and write the contents of gameData to file 
    [encoder finishEncoding]; 
    [gameData writeToFile:gameStatePath atomically:YES]; 
    [encoder release]; 

    // Tell the game controller that a resumed game is available 
    sharedGameController.resumedGameAvailable = YES; 

} 

答えて

0

が設定され、それは準備ができて行かせるnstimerを持っている、GO、GOは、その後、隠されていない場合、あなたは持っています非一時停止のゲーム状態

+0

私はすでにそれを持っています。私はそれが負荷gamestateからロードするために来たとき別の方法があったと思った... – iphonedevonthemake

関連する問題