Ios I';我很难保存游戏中每个难度级别的分数,并将它们分别显示在不同的标签上

Ios I';我很难保存游戏中每个难度级别的分数,并将它们分别显示在不同的标签上,ios,objective-c,Ios,Objective C,在我的GameScoreViewController中,我有3个标签来显示简单、中等和硬级别的分数。在我的游戏设置中,我有3个按钮来解决级别难度;简单、中等和困难(难度等级已经编码并开始工作)。在我的GameViewController中,我有一个分数标签。我遇到了问题/只是需要一些指导,告诉我游戏结束后如何根据游戏难度(简单、中等、困难)将分数从GameViewController返回到正确分数标签中的GameScoreViewController 我对objective-c还是相当陌生的。到

在我的GameScoreViewController中,我有3个标签来显示简单、中等和硬级别的分数。在我的游戏设置中,我有3个按钮来解决级别难度;简单、中等和困难(难度等级已经编码并开始工作)。在我的GameViewController中,我有一个分数标签。我遇到了问题/只是需要一些指导,告诉我游戏结束后如何根据游戏难度(简单、中等、困难)将分数从GameViewController返回到正确分数标签中的GameScoreViewController

我对objective-c还是相当陌生的。到这一点的一切都是编码的,除了这一块

当它只是一个分数,一个标签的时候,我的工作很好

我警告您,我的代码是多余的,肯定需要一些重构,因此任何提示都将不胜感激。

GameScoreViewController.h

NSInteger highScoreEasy;
NSInteger highScoreMedium;
NSInteger highScoreHard;
@property (nonatomic, strong) IBOutlet UIButton *easyModeButton;
@property (nonatomic, strong) IBOutlet UIButton *mediumModeButton;
@property (nonatomic, strong) IBOutlet UIButton *hardModeButton;

-(IBAction)easyMode;
-(IBAction)mediumMode;
-(IBAction)hardMode;
int scoreEasy;
int scoreMedium;
int scoreHard;

IBOutlet UILabel *scoreEasyLabel;
IBOutlet UILabel *scoreMediumLabel;
IBOutlet UILabel *scoreHardLabel;

-(void)scoreEasy;
-(void)scoreMedium;
-(void)scoreHard;
GameScoreViewController.m

highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];
highScoreEasyLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreEasy];

highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];
highScoreMediumLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreMedium];

highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
highScoreHardLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreHard];
-(IBAction)easyButton {
[GameManager setDifficulty:0];
highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];
}

-(IBAction)mediumButton {
[GameManager setDifficulty:1];
highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];
}

-(IBAction)hardButton {
[GameManager setDifficulty:2];
highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
}
-(void)GameOver {

if (scoreEasy > highScoreEasy) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreEasy forKey:@"highScoreEasySaved"];
}
else if (scoreMedium > highScoreMedium) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreMedium forKey:@"highScoreMediumSaved"];
}
else if (scoreHard > highScoreHard) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreHard forKey:@"highScoreHardSaved"];
}

- (void)viewDidLoad
{
scoreEasy = 0;
highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];

scoreMedium = 0;
highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];

scoreHard = 0;
highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
在GameSettingsViewController.h中,除了难度按钮之外,我没有任何特定的代码,但我将以任何方式显示代码。仅供参考,我正在使用NSObject设置并获取难度

游戏设置视频控制器.h

NSInteger highScoreEasy;
NSInteger highScoreMedium;
NSInteger highScoreHard;
@property (nonatomic, strong) IBOutlet UIButton *easyModeButton;
@property (nonatomic, strong) IBOutlet UIButton *mediumModeButton;
@property (nonatomic, strong) IBOutlet UIButton *hardModeButton;

-(IBAction)easyMode;
-(IBAction)mediumMode;
-(IBAction)hardMode;
int scoreEasy;
int scoreMedium;
int scoreHard;

IBOutlet UILabel *scoreEasyLabel;
IBOutlet UILabel *scoreMediumLabel;
IBOutlet UILabel *scoreHardLabel;

-(void)scoreEasy;
-(void)scoreMedium;
-(void)scoreHard;
游戏设置视频控制器.m

highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];
highScoreEasyLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreEasy];

highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];
highScoreMediumLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreMedium];

highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
highScoreHardLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreHard];
-(IBAction)easyButton {
[GameManager setDifficulty:0];
highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];
}

-(IBAction)mediumButton {
[GameManager setDifficulty:1];
highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];
}

-(IBAction)hardButton {
[GameManager setDifficulty:2];
highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
}
-(void)GameOver {

if (scoreEasy > highScoreEasy) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreEasy forKey:@"highScoreEasySaved"];
}
else if (scoreMedium > highScoreMedium) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreMedium forKey:@"highScoreMediumSaved"];
}
else if (scoreHard > highScoreHard) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreHard forKey:@"highScoreHardSaved"];
}

- (void)viewDidLoad
{
scoreEasy = 0;
highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];

scoreMedium = 0;
highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];

scoreHard = 0;
highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
GameViewController.h

NSInteger highScoreEasy;
NSInteger highScoreMedium;
NSInteger highScoreHard;
@property (nonatomic, strong) IBOutlet UIButton *easyModeButton;
@property (nonatomic, strong) IBOutlet UIButton *mediumModeButton;
@property (nonatomic, strong) IBOutlet UIButton *hardModeButton;

-(IBAction)easyMode;
-(IBAction)mediumMode;
-(IBAction)hardMode;
int scoreEasy;
int scoreMedium;
int scoreHard;

IBOutlet UILabel *scoreEasyLabel;
IBOutlet UILabel *scoreMediumLabel;
IBOutlet UILabel *scoreHardLabel;

-(void)scoreEasy;
-(void)scoreMedium;
-(void)scoreHard;
GameViewController.m

highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];
highScoreEasyLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreEasy];

highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];
highScoreMediumLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreMedium];

highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
highScoreHardLabel.text = [NSString stringWithFormat:@" %li", (long)highScoreHard];
-(IBAction)easyButton {
[GameManager setDifficulty:0];
highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];
}

-(IBAction)mediumButton {
[GameManager setDifficulty:1];
highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];
}

-(IBAction)hardButton {
[GameManager setDifficulty:2];
highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
}
-(void)GameOver {

if (scoreEasy > highScoreEasy) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreEasy forKey:@"highScoreEasySaved"];
}
else if (scoreMedium > highScoreMedium) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreMedium forKey:@"highScoreMediumSaved"];
}
else if (scoreHard > highScoreHard) {
    [[NSUserDefaults standardUserDefaults] setInteger:scoreHard forKey:@"highScoreHardSaved"];
}

- (void)viewDidLoad
{
scoreEasy = 0;
highScoreEasy = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreEasySaved"];

scoreMedium = 0;
highScoreMedium = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreMediumSaved"];

scoreHard = 0;
highScoreHard = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreHardSaved"];
以下是根据简单、中等或困难设置游戏难度的代码。我没有在这里放任何代码,但感觉应该放在这里;或者在设置分数后使用GameOver方法?

-(void)placeObjects {

randomTopObjectPosition = arc4random() %350;  
randomTopObjectPosition = randomTopObjectPosition - 228; 

//Get's _difficulty value from NSObject GameManager

[GameManager getDifficulty];

if ([GameManager getDifficulty] == 0) {

    randomBottomObjectPosition = randomTopObjectPosition + 690; //EASY
        objectTop.center = CGPointMake(340, randomTopObjectPosition);
        objectBottom.center = CGPointMake(340, randomBottomObjectPosition);

} else if ([GameManager getDifficulty] == 1) {
    randomBottomObjectPosition = randomTopObjectPosition + 670; //MEDIUM
        objectTop.center = CGPointMake(340, randomTopObjectPosition);
        objectBottom.center = CGPointMake(340, randomBottomObjectPosition);

} else if ([GameManager getDifficulty] == 2) {
    randomBottomObjectPosition = randomTopObjectPosition + 655; //HARD
        objectTop.center = CGPointMake(340, randomTopObjectPosition);
        objectBottom.center = CGPointMake(340, randomBottomObjectPosition);
}
}

几个小时后,我终于明白了。我必须更新GameOver方法,以包括难度

-(void)GameOver {

[GameManager getDifficulty]; //ADDED

if ([GameManager getDifficulty] == 0 & scoreEasy > highScoreEasy) {  //ADDED [GameManager getDifficulty] == 0
    [[NSUserDefaults standardUserDefaults] setInteger:scoreEasy forKey:@"highScoreEasySaved"];
}

else if ([GameManager getDifficulty] == 1 & scoreMedium > highScoreMedium) { //ADDED [GameManager getDifficulty] == 1
    [[NSUserDefaults standardUserDefaults] setInteger:scoreMedium forKey:@"highScoreMediumSaved"];
}
else if ([GameManager getDifficulty] == 2 & scoreHard > highScoreHard) { //ADDED [GameManager getDifficulty] == 2
    [[NSUserDefaults standardUserDefaults] setInteger:scoreHard forKey:@"highScoreHardSaved"];
}