(NO.00001)iOS游戏SpeedBoy Lite成形记(二十九):增加排行榜功能2
接下来回到Xcode中,首先在PopupLayer.m中添加justClose方法:
-(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 ;)
(NO.00001)iOS游戏SpeedBoy Lite成形记(二十九):增加排行榜功能2的更多相关文章
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能
游戏大体上基本也就完成了,还差一个排行榜.否则如何激励各位选手创造新纪录呢? 排行榜功能也没什么难的,不过需要一点点排序的算法上的考虑. 这里我们把排行榜记录数据和排序都放在GameState类中,在 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十四)
我们回到Xcode,打开GameScene.m,首先要添加实例变量: CCNode *_trackLine; 为了根据选中的赛道更新_trackLine的位置,我们添加一个显示方法: -(void)s ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)
自己的游戏自己更需要多玩,这样才能首先发现不足的地方.所以本猫到现在已经忍一个地方很久了,就是弹出moneyLayer后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
下面修改最为关键的matchRun方法里的代码: CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{ _finishedCou ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十六)
到目前为止,选手跑到终点时仿佛没什么激动人心的事情发生呢?貌似需要添加一些胜利的特效啊! 前面说好的不添加特效,只完成游戏功能的诺言呢? T T 我们主要想实现这样一个特效效果: 1.胜利的玩家突出显 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十五)
每次压赌要打开弹出菜单还是让人略觉不爽,下面我们再添加一个随机押注的按钮:自动随机选择选手和下赌金额. 打开spriteBuilder,修改GameInterface.ccb的界面,在Run按钮旁边添 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(三十):增加排行榜功能3
在这个例子中,我们的显示代码只需要选手的名字以及对应的成绩.根据选手名字取对应的成绩可以用前面实现的playerRecord:方法,我们只需要将按照成绩排序后的选手名字返回就可以了. 我只需要再实现一 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十七)
切换回Xcode,在GameScene.m中添加新的实例变量:_winLayer. 接下来在第一个选手到达终点时,我们可以完成选手胜利的动画特效了. 首先,在GameScene.m中添加一个新方法pl ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十三)
现在还有一个视觉上的问题:玩家每次在游戏开始前选择某一赛道时,无法直观的看到所选的是哪条赛道.只能通过界面上方的gambleLabel中的文字非直观的看到.我们现在来完善它! 为了能让玩家清楚地看到, ...
随机推荐
- leetcode刷题笔记231 2的幂
题目描述: 给定一个整数,写一个函数来判断它是否是2的幂. 题目分析: 判断一个整数是不是2的幂,可根据二进制来分析.2的幂如2,4,8,等有一个特点: 二进制数首位为1,其他位为0,如2为10,4为 ...
- JAVA生成数字0~9字母A~Z混合编码0000、0001...0009、000A...000Z、0010......
分别是求下一个编码 和 输出所有编码 /** * 用1--9加A--Z混合编码 使用ASCII码判断 * LYL * 传一个值 求下一个编码 */ public String getABCDCode( ...
- 《读书报告 -- Elasticsearch入门 》--简单使用(2)
<读书报告 – Elasticsearch入门 > ' 第四章 分布式文件存储 这章的主要内容是理解数据如何在分布式系统中存储. 4.1 路由文档到分片 创建一个新文档时,它是如何确定应该 ...
- cassandra 3.x官方文档(2)---架构解析
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- JavaScript基础精讲
---------------------------------------------------------------------------------------------------- ...
- 2017京东校招面试回忆(已成功拿到offer)
一面 24日 晚上5:30-6:40 1 先说自己熟悉的领域 2 list的实现有什么? arraylist1.6 1.7区别 底层 linkedlist 底层是怎么实现的 单向还是双向 ...
- J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())
J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate()) 当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法. ...
- PHP Ajax JavaScript Json 实现天气信息获取
使用第三方服务 间接方式 思路 使用到的服务 实现代码 前端完整代码 总结 要在自己的网站上添加一个天气预报功能,是一个很普通的需求,实现起来也不是很难.今天来介绍几个简单的方法. 使用第三方服务 有 ...
- Python 好用得让人发指的函数参数语法糖
是吗? def f(x,y,z): return x+y+z t=(200,300) print(f(1,2,3)) print(f(1,*t)) 结果: >>> 6 501 这是我 ...
- Gazebo機器人仿真學習探索筆記(四)模型編輯
模型編輯主要是自定義編輯物體模型構建環境,也可以將多種模型組合爲新模型等,支持外部模型導入, 需要注意的導入模型格式有相應要求,否在無法導入成功, COLLADA (dae), STereoLitho ...