(NO.00001)iOS游戏SpeedBoy Lite成形记(二十九):增加排行榜功能2

简介:

接下来回到Xcode中,首先在PopupLayer.m中添加justClose方法:

-(void)justClose{
    [self.gameScene removePopup];
}
AI 代码解读

然后在GameInterface.m中添加showRecords方法:

-(void)showRecords{
    [_gameScene showPopupNamed:@"Layers/RecordsLayer"];
}
AI 代码解读

接着,在GameScene.m中添加实例变量_recordsLabel.

好了,在GameScene.m中继续添加代码之前我们先考虑一下GameState里对应的记录如何存放以及需要提供什么功能的方法.

我们打算使用字典来存放记录,key为选手的名字(so不应该有重名选手),对应的值就是该选手的最好成绩.我们不想从外面洞悉该记录字典的内容,所以该字典应该是私有变量,我们在GameState.m里添加它:

    NSMutableDictionary *_playerRecords;
AI 代码解读

我们需要2个方法作为其读取器方法,在GameState.h接口文件中添加:

-(void)addPlayer:(NSString*)playerName;
-(CCTime)playerRecord:(NSString*)playerName;
AI 代码解读

以下是上面2个方法的实现:

-(void)addPlayer:(NSString *)playerName{
    //设置一个较大值以便被超越 ;)
    CCTime record = 100.f;
    //不重复添加player,在这个例子中没有什么必要.
    if (_playerRecords[playerName]) {
        return;
    }

    [_playerRecords setObject:@(record) forKey:playerName];

}

-(CCTime)playerRecord:(NSString *)playerName{
    NSNumber *record = (NSNumber*)_playerRecords[playerName];
    NSAssert(record, @"No such player!");
    return record.floatValue;
}
AI 代码解读

我们再添加一个更新选手记录的方法,同样要在头文件里导出:

-(void)updatePlayerRecord:(NSString *)playerName withRecord:(CCTime)record{
    if (!_playerRecords[playerName]) {
        return;
    }

    NSNumber *objRec = (NSNumber*)_playerRecords[playerName];
    if (record < objRec.floatValue) {
        [_playerRecords setObject:@(record) forKey:playerName];
    }
}
AI 代码解读

功能为如果选手不在字典中直接退出,否则只有当新记录小于旧记录时才更新字典中的值.

下一篇我们实现GameState中最重要的排序功能,see you ;)

目录
打赏
0
0
0
0
16
分享
相关文章
深入解析iOS 14隐私保护功能:用户数据安全的新里程碑
随着数字时代的到来,个人隐私保护成为全球关注的焦点。苹果公司在最新的iOS 14系统中引入了一系列创新的隐私保护功能,旨在为用户提供更透明的数据使用信息和更强的控制权。本文将深入探讨iOS 14中的几项关键隐私功能,包括App跟踪透明性、简化的隐私设置以及增强的系统安全性,分析它们如何共同作用以提升用户的隐私保护水平。
241 3
深入探索iOS 14的隐私保护功能
本文将深入探讨iOS 14操作系统中的隐私保护功能,包括新的隐私指示器、应用程序跟踪透明度以及增强的隐私设置。我们将分析这些功能如何提高用户对个人数据的控制权,并讨论它们对应用开发者和广告行业的影响。
107 1
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
121 3
苹果发布iOS 18 Beta 4,新增CarPlay 壁纸等多项功能改进
本文首发于公众号“AntDream”,探索iOS 18 Beta 4新功能与改进: CarPlay壁纸、iCloud设置访问优化、相机控制记忆、隐藏文件夹设计变更、深色/浅色模式图标同步、股票应用图标调整、iPhone镜像功能增强、控制中心蓝牙切换键、AssistiveTouch新增Type to Siri等,以及Apple Intelligence暗示。开发者可通过苹果计划提前体验。
158 12
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
505 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
288 0
|
11月前
|
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
164 0
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
204 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。