【问题标题】:Storing and retreiving high scores [duplicate]存储和检索高分[重复]
【发布时间】:2013-11-09 20:26:53
【问题描述】:

我正在开发一款 Pong 游戏来学习一些 iPhone 编程。

我有一个 NSString* playerName 和 int playerScore。

游戏结束后我会得到这个。

现在我需要一种在用户设备上存储高分的方法。 但是有一些注意事项。

如果分数是前 10 名的高分,我只会费心存储分数。 如果用户的名字已经在列表中并且分数值得添加(例如> 10th score),则更新分数并按分数重新排序。

我来自 C++ 世界。

在 C++ 中,我会使用一个简单的文件,我会对其进行解析、在内存中使用,然后重写该文件。

我想知道的是,这应该如何在 Obj-C 中完成。有没有什么类或者什么东西可以让这种任务变得简单方便?

谢谢

【问题讨论】:

  • hm.. 即使我想知道是否有一个类可以使这项任务变得简单,但是当我这样做时,我使用了一个 plist 文件,我将对其进行读/写。跨度>

标签: ios iphone objective-c


【解决方案1】:

只需使用NSArrayNSDictionary 实例,其中字典包含您的分数(如NSNumbers)和名称。然后您可以使用initWithContentsOfFile:writeToFile:atomically: 直接将其读写到磁盘(作为属性列表)。

【讨论】:

    【解决方案2】:

    试试这个

    创建一个NSMutableArray 来存储用户分数。 每次游戏结束时,在NSMutableArray 中找到最高值 10 的分数。 之后使用NSUserDefaults 存储PlayerNameHighestScores

    NSUserDefaults 将允许您将对象保存在用户的设备中

    NSString *PlayerName;
    int PlayerScore;
    
    
    //SAVING
    
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    
    // saving an NSString
    [prefs setObject:PlayerName forKey:@"name"];
    
    // saving an NSInteger
    [prefs setInteger:PlayerScore forKey:@"score"];
    
    //GETTING
    
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    
    // getting an NSString
    NSString *myString = [prefs stringForKey:@"name"];
    
    // getting an NSInteger
    int myInt = [prefs integerForKey:@"score"];
    

    这只是一些我认为会有所帮助的指南:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 2020-11-20
      • 2010-09-29
      相关资源
      最近更新 更多