2012-10-16 3 views
1

xcode 4로 응용 프로그램을 만들었습니다. 모든 코드가 기본 코드 파일에 있으므로 더 많은 클래스가 없습니다. 조회수는 3 회이지만 현재로서는 1 회만 사용합니다. 이제 게임에서 점수로 정수를 저장하고 게임이 끝나면 점수가 무엇인지 보여줍니다.하지만 다른 두 가지보기 중 하나에서 레이블에 어떻게 그 int를 표시 할 수 있는지 알고 싶었습니다. 응용 프로그램을 다시 시작하면 어떻게 유지할 수 있습니까? 나는 나쁜 영어로 유감이지만이 목표 C와 iphone Apps에 익숙하지 않다. 고맙습니다!응용 프로그램이 닫힐 때 NSInteger intScore 저장

// 
// ViewController.m 
// Mundo Grafia 
// 
// Created by Axel Lambregts on 2/10/12. 
// Copyright (c) 2012 AxelNiels. All rights reserved. 
// 

#import "ViewController.h" 

@interface ViewController() 

@end 
@implementation ViewController 


// variabelen aanmaken 
NSInteger intScore; 
NSInteger intRandomMonument; 
NSInteger intRandomAnswerPosition; 
NSInteger intRandomAnswerA; 
NSInteger intRandomAnswerB; 
NSInteger intRandomAnswerC; 
NSInteger intRandomAnswerD; 
NSInteger intArrayEuropeLenght; 
NSInteger intAmountOfQuestionsAsked; 
NSString *scoreSpatie; 
NSString *arrEurope[][2] = 

    { 

     {@"Eifel.jpg",@"Paris"}, 
     {@"NotreDame.jpg",@"Paris"}, 
     {@"ArcDeTriompheParis.jpg",@"Paris"}, 

     {@"AtomuimBrussels.jpg",@"Brussels"}, 
     {@"MannekePis.jpg",@"Brussels"}, 

     {@"Colosseum.jpg",@"Rome"}, 
     {@"TreviFountainRome.jpg",@"Rome"}, 

     {@"SagradaFamilia.jpg",@"Barcelona"}, 
     {@"SpanishSchoolMadrid.jpg",@"Madrid"}, 

     {@"KremlinMoskou.jpg",@"Moskou"}, 

     {@"MermaidKopenhagen.jpg",@"Copenhagen"}, 

     {@"MonteCarloMonaco.jpg",@"Monaco"}, 

     {@"AcropolisAthens.jpg",@"Athens"}, 

     {@"ParlementBudapest.jpg",@"Budapest"}, 

     {@"BuildingReykjavik.jpg",@"Reykjavik"}, 

     {@"StatueKiev.jpg",@"Kiev"}, 

     {@"PortOfEuropeLissabon.jpg",@"Lisbon"}, 

     {@"ViewSanMarino.jpg",@"San Marino"}, 

     {@"BridgesPrague.jpg",@"Prague"}, 

     {@"MoskeeAnkara.jpg",@"Ankara"}, 

     {@"TowerBridgeLondon.jpg",@"London"}, 
     {@"BigBenLondon.jpg",@"London"}, 
     {@"LondonEyeLondon.jpg",@"London"}, 

     {@"BrandenburgerTor.jpg",@"Berlin"}, 
     {@"ReichstagBerlin.jpg",@"Berlin"}, 

     {nil,nil} 

    }; 


/* 
NSArray *arrEurope = @[ 
@[@"Eifel.jpg",@"Paris"], 
@[@"NotreDame.jpg",@"Paris"], 
@[@"ArcDeTriompheParis.jpg",@"Paris"], 
@[@"Eifel.jpg",@"Paris"], 
@[@"NotreDame.jpg",@"Paris"], 
@[@"ArcDeTriompheParis.jpg",@"Paris"], 

@[@"AtomuimBrussels.jpg",@"Brussels"], 
@[@"MannekePis.jpg",@"Brussels"], 

@[@"Colosseum.jpg",@"Rome"], 
@[@"TreviFountainRome.jpg",@"Rome"], 

@[@"SagradaFamilia.jpg",@"Barcelona"], 
@[@"SpanishSchoolMadrid.jpg",@"Madrid"], 

@[@"KremlinMoskou.jpg",@"Moskou"], 

@[@"MermaidKopenhagen.jpg",@"Copenhagen"], 

@[@"MonteCarloMonaco.jpg",@"Monaco"], 

@[@"AcropolisAthens.jpg",@"Athens"], 

@[@"ParlementBudapest.jpg",@"Budapest"], 

@[@"BuildingReykjavik.jpg",@"Reykjavik"], 

@[@"StatueKiev.jpg",@"Kiev"], 

@[@"PortOfEuropeLissabon.jpg",@"Lisbon"], 

@[@"ViewSanMarino.jpg",@"San Marino"], 

@[@"BridgesPrague.jpg",@"Prague"], 

@[@"MoskeeAnkara.jpg",@"Ankara"], 

@[@"TowerBridgeLondon.jpg",@"London"], 
@[@"BigBenLondon.jpg",@"London"], 
@[@"LondonEyeLondon.jpg",@"London"], 

@[@"BrandenburgerTor.jpg",@"Berlin"], 
@[@"ReichstagBerlin.jpg",@"Berlin"] 



]; 


*/ 



//methode'start' wanneer er op de start-knop wordt gedrukt 
-(IBAction)start{ 



    [self NewQuestionEurope]; 
    intAmountOfQuestionsAsked = 0; 
    //reset and show score 
    intScore = 0; 
    score.text = [NSString stringWithFormat:@"%d", intScore]; 

    //make buttons and labels visible 
    Start.hidden = YES; 
    question.hidden = NO; 
    score.hidden = NO; 
    scoretext.hidden = NO; 
    imageContainer.hidden = NO; 


    answerA.hidden = NO; 
    answerB.hidden = NO; 
    answerC.hidden = NO; 
    answerD.hidden = NO; 

    answerA.textColor = [UIColor greenColor]; 
    answerB.textColor = [UIColor greenColor]; 
    answerC.textColor = [UIColor greenColor]; 
    answerD.textColor = [UIColor greenColor]; 


    clickButtonA.hidden = NO; 
    clickButtonB.hidden = NO; 
    clickButtonC.hidden = NO; 
    clickButtonD.hidden = NO; 

    GoodFalse.hidden = NO; 
    [email protected]"Press a button to answer"; 
    GoodFalse.textColor = [UIColor greenColor]; 
    question.text = @"Where is this picture taken?"; 

}//einde start 





-(IBAction)Reset{ 

score.text= @"gelukt"; 



} 


-(IBAction)NewQuestionEurope{ 


    if(intAmountOfQuestionsAsked == 19){ 

     question.text = [@"Uw score is: "stringByAppendingString: [NSString stringWithFormat:@"%d", intScore]]; 

     Start.hidden = NO; 
     question.hidden = NO; 
     score.hidden = YES; 
     scoretext.hidden = YES; 
     imageContainer.hidden = YES; 


     answerA.hidden = YES; 
     answerB.hidden = YES; 
     answerC.hidden = YES; 
     answerD.hidden = YES; 

     clickButtonA.hidden = YES; 
     clickButtonB.hidden = YES; 
     clickButtonC.hidden = YES; 
     clickButtonD.hidden = YES; 
     GoodFalse.hidden = YES; 

     Start.titleLabel.text = @"END"; 



    } 

    else{ 




    intAmountOfQuestionsAsked ++; 



    //Deze lus geeft aan intArrayEuropeLenght de waarde van hoeveel rijen de array bevat// 
    intArrayEuropeLenght = 0; 

    while (arrEurope[intArrayEuropeLenght][0] != NULL) 
    { 
     intArrayEuropeLenght++; 
    } 


    //score.text = [NSString stringWithFormat:@"%d", intScore]; 


    scoreSpatie = [ 
          [NSString stringWithFormat:@"%d", intScore] 
          stringByAppendingString:@"/"]; 
    score.text = [ 
        scoreSpatie 
        stringByAppendingString:[NSString stringWithFormat:@"%d", intAmountOfQuestionsAsked] 
        ]; 



    // Randoms genereren voor: 4 random antwoorden; 1 random afbeelding; een random positie om het juiste antwoord in te plaatsen 
    intRandomMonument = arc4random()%intArrayEuropeLenght;    
    intRandomAnswerA = arc4random()%intArrayEuropeLenght; 
    intRandomAnswerB = arc4random()%intArrayEuropeLenght; 
    intRandomAnswerC = arc4random()%intArrayEuropeLenght; 
    intRandomAnswerD = arc4random()%intArrayEuropeLenght; 
    intRandomAnswerPosition = arc4random()%4; 



    while(arrEurope[intRandomMonument][0] == @"removed"){ 

     intRandomMonument = arc4random()%intArrayEuropeLenght; 

    } 


    //Random antwoorden maken 
    answerA.text = @""; 
    answerB.text = @""; 
    answerC.text = @""; 
    answerD.text = @""; 

    if(answerA.text = @""){ 
     answerA.text = arrEurope[intRandomAnswerA][1]; 
    } 

    if(answerB.text = @""){ 
     answerB.text = arrEurope[intRandomAnswerB][1]; 
    } 

    if(answerC.text = @""){ 
     answerC.text = arrEurope[intRandomAnswerC][1]; 
    } 

    if(answerD.text = @""){ 
     answerD.text = arrEurope[intRandomAnswerD][1]; 
    } 



    switch(intRandomAnswerPosition) 
    { 
     case 0: answerA.text = arrEurope[intRandomMonument][1]; 
      break; 
     case 1: answerB.text = arrEurope[intRandomMonument][1]; 
      break; 
     case 2: answerC.text = arrEurope[intRandomMonument][1]; 
      break; 
     case 3: answerD.text = arrEurope[intRandomMonument][1]; 
    }; 



    //als er antwoorden hetzelfde zijn, voor de gelijke een random blijven maken tot ze niet hetzelfde zijn 
    if(
     [answerA.text isEqualToString: answerB.text]|| 
     [answerA.text isEqualToString: answerC.text]|| 
     [answerA.text isEqualToString: answerD.text] 
     ){ 

     answerA.text = arrEurope[arc4random()%intArrayEuropeLenght][1]; 

    }; 

    if(
     [answerB.text isEqualToString: answerA.text]|| 
     [answerB.text isEqualToString: answerC.text]|| 
     [answerB.text isEqualToString: answerD.text] 
     ){ 

     answerB.text = arrEurope[arc4random()%intArrayEuropeLenght][1]; 

    }; 

    if(
     [answerC.text isEqualToString: answerA.text]|| 
     [answerC.text isEqualToString: answerB.text]|| 
     [answerC.text isEqualToString: answerD.text] 
     ){ 

     answerC.text = arrEurope[arc4random()%intArrayEuropeLenght][1]; 

    }; 

    if(
     [answerD.text isEqualToString: answerA.text]|| 
     [answerD.text isEqualToString: answerB.text]|| 
     [answerD.text isEqualToString: answerC.text] 
     ){ 

     answerD.text = arrEurope[arc4random()%intArrayEuropeLenght][1]; 

    }; 




    //Laat de afbeelding zien van het gekozen monument (via random gekozen) 
    imageContainer.image = [UIImage imageNamed: arrEurope[intRandomMonument][0]]; 




    } 

} 


//hier onder zit ergens een fout want hij geeft precies random juist en fout :) 
//kan zijn dat het opgelost is vanaf we niet 2x dezelfde vragen hebben maar ik denk het niet. 

//press buttonA 
-(IBAction)AnswerA { 



    if([answerA.text isEqualToString: arrEurope[intRandomMonument][1]]){ 

     GoodFalse.text = @"Correct!"; 
     GoodFalse.textColor = [UIColor greenColor]; 
     intScore ++; 

    }else { 

     [email protected]"Wrong!"; 
     GoodFalse.textColor = [UIColor redColor]; 

     } 

    arrEurope[intRandomMonument][0] = @"removed"; 

    [self NewQuestionEurope]; 

} 

//press buttonB 
-(IBAction)AnswerB { 

    if([answerB.text isEqualToString: arrEurope[intRandomMonument][1]]){ 

     GoodFalse.text = @"Correct!"; 
     GoodFalse.textColor = [UIColor greenColor]; 
     intScore ++; 

    }else { 

     [email protected]"Wrong!"; 
     GoodFalse.textColor = [UIColor redColor]; 
    } 

    arrEurope[intRandomMonument][0] = @"removed"; 
[self NewQuestionEurope]; 
} 

//press buttonC (works) 
-(IBAction)AnswerC { 


    if([answerC.text isEqualToString: arrEurope[intRandomMonument][1]]){ 

     GoodFalse.text = @"Correct!"; 
     GoodFalse.textColor = [UIColor greenColor]; 
     intScore ++; 

    }else { 

     [email protected]"Wrong!"; 
     GoodFalse.textColor = [UIColor redColor]; 
    } 

arrEurope[intRandomMonument][0] = @"removed"; 
    [self NewQuestionEurope]; 
} 


//press buttonD 
-(IBAction)AnswerD { 


    if([answerD.text isEqualToString: arrEurope[intRandomMonument][1]]){ 

     GoodFalse.text = @"Correct"; 
     GoodFalse.textColor = [UIColor greenColor]; 
     intScore ++; 

    }else { 

     [email protected]"Wrong!"; 
     GoodFalse.textColor = [UIColor redColor]; 
    } 
    arrEurope[intRandomMonument][0] = @"removed"; 
    [self NewQuestionEurope]; 
} 





//hier onder niets wijzigen 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 




} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 
+0

점수 저장에 대해서는 NSUserDefaults를 확인하십시오. – onnoweb

+0

내가하고 싶은 첫 번째 일은 다른 viewcontrol에 레이블을 붙이는 것입니다. 앱을 닫기 위해 저장하면 걱정하지 않게됩니다. –

답변

3
NSUserDefaults *scores = [NSUserDefaults standardUserDefaults]; 
if (_points>[scores integerForKey :@"highscore"]) { 
    [_highScoresLabel setString:[NSString stringWithFormat:@"%d",_points]]; 
    [scores setInteger:_points forKey:@"highscore"]; 

나는 지속적으로 보여주고 그 코드를 사용하고 있습니다 :

방법이이 코드

하지 미세 codefile 수, 내가 다른의 ViewController에 넣어 뭔가 할 내 게임 중 최고점.

단순히 _higScoreLabel이 레이블 ypu가 점수를 표시 할 것입니다이 코드를 추가 다른있는 UIViewController에 표시 : 즉시 사용자의 최종 점수가 무엇인지 알고

NSUserDefaults *scores = [NSUserDefaults standardUserDefaults]; 
NSString *_points = [scores integerForKey :@"highscore"]; 
[_highScoresLabel setString:[NSString stringWithFormat:@"%d",_points]]; 
+0

당신의 질문에 대한 좋은 대답이있는 것 같습니다. 적어도 올바른 것으로 하나 설정 ... –

0

를 NSUserDefaults에 정수를 쓰기 같은 :

[[NSUserDefaults standardUserDefaults] setInteger:intScore forKey:@"score"]; 

그런 다음, 다른 뷰 컨트롤러에서 점수의 정수를 보여주기 위해, 당신은 단지 다른의 ViewController의 viewDidLoad에있는 디스크에서 값을 읽은 다음 라벨을 설정해야합니다! 값이 이미 디스크에 저장되었으므로 매개 변수로 전달하거나 다른 viewcontroller에서 속성으로 설정하지 않아도 viewDidLoad의 NSUserDefaults에서 읽거나 (또는 ​​설정해야하는 whreever 메소드) 그것). 두 번째의 ViewController에 따라서

는 수행

- (void) viewDidLoad { 
    self.anotherLabel.text = [NSString stringWithFormat:@"%d", [defaults integerForKey:@"score"]]; 
} 
+0

그래, 문제가있어; 어떻게 두 번째 뷰어, 정상적인 viewcontroller 작동하지만 내 캔트 두 번째 코드를 얻을 내 레이블을 연결할 수 –

+0

어떻게 두 번째 viewcontroller 뭔가 넣을합니까? –

+0

일반적으로보기 컨트롤러에서보기 컨트롤러로 UILabel을 전달하지 않습니다. "두 번째 뷰 컨트롤러에 무엇인가 넣으세요"또는 "내 레이블을 두 번째 뷰어에 연결"하는 것이 무슨 뜻인지 잘 모르겠습니다. 두 번째보기 컨트롤러에서 디스크의 점수 값을 검색하여 레이블에 표시하고 싶지 않으십니까? 그렇다면 두 번째보기 컨트롤러의 viewDidLoad 메서드에서 위에있는 코드를 사용합니다. –

0

//에 저장하려면 현

int highScore = yourGameScore; 
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:highScore]  forKey:@"HighScore"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

//으로 현

int highScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"HighScore"] intValue ]; 

here is similar question in stack..

에서 저장된 값을 얻을
0
Try using NSUserDefaults ,it will keep the value in memory until you forcefully remove it or you delete the app. 

    int Score = HighScore; 

    [[NSUserDefaults standardUserDefaults] setObject:Score forKey:@"anyKey"]; 

    currentScoreLabel.text = [NSString stringWithFormat:@"%d",Score]; 
    highScoreLabel.text=[NSString stringWithFormat:@"%d",[[NSUserDefaults standardUserDefaults] objectForKey:@"anyKey"]]; 
관련 문제