6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager
    Boike12

    Duplicaat van een integer voor highscore!

    Hoi,

    Ik stel wel veel vragen de laatste tijd hè?
    Maarja, hier komt er weer 1:
    Ik heb via NSUserDefault een integer “hits” opgelagen. De integer wordt ook keurig geladen in een UILabel. Maaar, als de hit is opgeslagen als 50, en als ik nu in de game 25 als score haal, dan word “Hits” opgeslagen als 25, en klopt de highscore niet meer…

    Ik had een klein idee, maar ik weet niet precies hoe ik dit moet gaan uitwerken.

    [[NSUserDefaults standardUserDefaults] setInteger:hits forKey:@”SCORE”];

    Integer wordt opgeslagen.

    hits = [[NSUserDefaults standardUserDefaults] integerForKey:@”SCORE”];
    [Highscore setText:[NSString stringWithFormat:@”Highscore = %d hits”, hits]];

    Integer wordt geladen, en wordt vertoont in de UILabel Highscore.

    Misschien kan ik de “Hits” integer “Dupliceren” en die duplicatie ook opslaan. Dan een if/else statement maken en dat komt er dan zo uit te zien:

    Duplicaat = Hits2

    if (hits > hits2) {
    //En dan de hits integer weer opslaan.
    [[NSUserDefaults standardUserDefaults] setInteger:hits forKey:@”SCORE”];
    }

    Heeft iemand een idee hoe ik een opgeslagen integer dupliceer?

    Dankjewel:)

    Bijdrager
    jonaske_

    int hits2;
    hits2 = hits1;

    Ik zou dan ook enkel hits1 opslaan via nsuserdefaults aangezien het de topscore is. De andere waarde blijft voorlopig in je app opgeslagen.

    Bijdrager
    Boike12

    Hmm, dat heb ik al een paar keer geprobeerd.. Ik ga gewoon nog een keer proberen:)

    Bijdrager
    jonaske_

    Nu het is wel zo als je zegt dat hits1 = hits 2, dan zal uw if-statement nooit uitgevoerd worden.
    Indien je echt wil dat de andere waarde ook wordt opgeslagen dan zal je denk ik best het volgende doen.

    int score

    int highscore

    //In de score moet je de huidige score bijhouden

    highscore = [[NSUserDefaults standardUserDefaults] integerForKey:@”HIGHSCORE”];
    [Highscore setText:[NSString stringWithFormat:@”Highscore = %i hits”, highscore]];

    //je moet niet de highscore dupliceren maar enkel vgl met de variabele score die je gebruikt hebt om de score bij te houden tijdens het spelen
    if (score > highscore) {
    //En dan de hits integer weer opslaan.
    [[NSUserDefaults standardUserDefaults] setInteger:score forKey:@”HIGHSCORE”];
    }

    Bijdrager
    bitsflew
     
     
    /// in applicationDidFinishLauching of viewDidLoad om Highscore UILabel  te syncen.
    [self setHighscore: [self highScore]];
     
    .
    .
    .
     
    // highscore getter
    -(void) setHighscore: (NSInteger) score {
    	[[NSUserDefaults standardUserDefaults] setInteger: score forKey:@”SCORE”];
    	[Highscore setText:[NSString stringWithFormat:@"Highscore = %d hits", score]];
    }
     
    // highscore getter
    -(NSInteger) highScore {
    	return  [[NSUserDefaults standardUserDefaults] integerForKey:@”SCORE”];
    }
     
    // highscore registratie
    -(void) updateHighscoreWithScore: (NSInteger) score {
     
    	if(score > [self highScore]) {
     
    		[self setHighscore: score];
    	}
    }
     

    De volgende variant van updateHighscoreWithScore kan handig zijn om na de aanroep te controleren of er een nieuwe highscore is

     
    // highscore registratie
    -(BOOL) updateHighscoreWithScore: (NSInteger) score {
    	BOOL highScoreChanged = NO;
    	if(score > [self highScore]) {
     
    		[self setHighscore: score];
    		highScoreChanged = YES;
    	}
    	return highScoreChanged;
    }
     

    Handig dat je in een codeblock geen ‘>’ en ‘<‘ kunt gebruiken:(

    Bijdrager
    Boike12

    Ik hoop dat dit met lukt! Moet ik nog iets in mijn viewcontroller class zetten? Niets om in mijn storyboard om te linken?

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.