(NO.00001)iOS游戏SpeedBoy Lite成形记(二十九):增加排行榜功能2
2015-10-28 12:16
447 查看
接下来回到Xcode中,首先在PopupLayer.m中添加justClose方法:
然后在GameInterface.m中添加showRecords方法:
接着,在GameScene.m中添加实例变量_recordsLabel.
好了,在GameScene.m中继续添加代码之前我们先考虑一下GameState里对应的记录如何存放以及需要提供什么功能的方法.
我们打算使用字典来存放记录,key为选手的名字(so不应该有重名选手),对应的值就是该选手的最好成绩.我们不想从外面洞悉该记录字典的内容,所以该字典应该是私有变量,我们在GameState.m里添加它:
我们需要2个方法作为其读取器方法,在GameState.h接口文件中添加:
以下是上面2个方法的实现:
我们再添加一个更新选手记录的方法,同样要在头文件里导出:
功能为如果选手不在字典中直接退出,否则只有当新记录小于旧记录时才更新字典中的值.
下一篇我们实现GameState中最重要的排序功能,see you ;)
-(void)justClose{ [self.gameScene removePopup]; }
然后在GameInterface.m中添加showRecords方法:
-(void)showRecords{ [_gameScene showPopupNamed:@"Layers/RecordsLayer"]; }
接着,在GameScene.m中添加实例变量_recordsLabel.
好了,在GameScene.m中继续添加代码之前我们先考虑一下GameState里对应的记录如何存放以及需要提供什么功能的方法.
我们打算使用字典来存放记录,key为选手的名字(so不应该有重名选手),对应的值就是该选手的最好成绩.我们不想从外面洞悉该记录字典的内容,所以该字典应该是私有变量,我们在GameState.m里添加它:
NSMutableDictionary *_playerRecords;
我们需要2个方法作为其读取器方法,在GameState.h接口文件中添加:
-(void)addPlayer:(NSString*)playerName; -(CCTime)playerRecord:(NSString*)playerName;
以下是上面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; }
我们再添加一个更新选手记录的方法,同样要在头文件里导出:
-(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]; } }
功能为如果选手不在字典中直接退出,否则只有当新记录小于旧记录时才更新字典中的值.
下一篇我们实现GameState中最重要的排序功能,see you ;)
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 我是运营,我没有假期
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- 编程趣事:当下流行编程语言的”讨厌”程度排行榜