(NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
下面修改最为关键的matchRun方法里的代码:
CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{
_finishedCount++;
[player endMatch];
[player stopAction:repeatJump];
[player stopAction:repeatSkew];
[self removeChild:player.streak];
if (_finishedCount == 1) {
_bestElapsedTime = player.elapsedTime;
GameState *gameState = [GameState sharedInstance];
NSInteger money = gameState.money;
if (player.playerNumber == _betPlayer) {
gameState.totalMoney += money;
[_interface updateStatusLabel:[NSString stringWithFormat:@"资金 +%d",money] withColor:[CCColor greenColor]];
}else{
gameState.totalMoney -= money;
[_interface updateStatusLabel:[NSString stringWithFormat:@"资金 -%d",money] withColor:[CCColor redColor]];
}
}
CCLabelTTF* label = (CCLabelTTF*)_labelArray[player.playerNumber-1];
NSTimeInterval intervalOffset = player.elapsedTime - _bestElapsedTime;
if (intervalOffset > 0) {
label.string = [NSString stringWithFormat:@"NO.%d +%.4f s",_finishedCount,intervalOffset];
}else{
label.string = [NSString stringWithFormat:@"NO.%d %.4f s",_finishedCount,player.elapsedTime];
label.color = [CCColor greenColor];
}
label.visible = YES;
if (_finishedCount == PlayerCount) {
_finishedCount = 0;
_matching = NO;
_betPlayer = 0;
_isBeted = NO;
GameState *gameState = [GameState sharedInstance];
gameState.money = 0;
[self updateGambleState];
}
}];
主要变化都在block回调里,所以只贴出其中的内容.
主要逻辑是在比赛完毕后更新游戏状态.如果玩家赌对了则资金总数加上押注的数目,否则减去该数目.
为了区分出赢钱和输钱,我们在GameInterface类中添加新实例方法,首先改动接口声明:
-(void)updateStatusLabel:(NSString *)msg withColor:(CCColor*)color;
然后再到GameInterface.m中实现该方法:
-(void)updateStatusLabel:(NSString *)msg withColor:(CCColor*)color{
CCColor *orgColor = _statusLabel.color;
CCActionTintTo *tintAction = [CCActionTintTo actionWithDuration:1 color:color];
CCActionCallBlock *block = [CCActionCallBlock actionWithBlock:^{
_statusLabel.color = orgColor;
}];
CCActionDelay *delayAction = [CCActionDelay actionWithDuration:4];
CCActionSequence *seqAction = [CCActionSequence actions:tintAction,delayAction,block,nil];
[self updateStatusLabel:msg];
[_statusLabel runAction:seqAction];
}
大体上是根据color参数动态改变状态标签的颜色,最后复原原来的颜色.
这一阶段新增的游戏逻辑完成的差不多了,下面就是实现GameOver的情形了.
(NO.00001)iOS游戏SpeedBoy Lite成形记(二十)的更多相关文章
- (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成形记(二十九):增加排行榜功能2
接下来回到Xcode中,首先在PopupLayer.m中添加justClose方法: -(void)justClose{ [self.gameScene removePopup]; } 然后在Game ...
- (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中的文字非直观的看到.我们现在来完善它! 为了能让玩家清楚地看到, ...
随机推荐
- 通过ajax和spring 后台传输json数据
在通过ajax从页面向后台传数据的时候,总是返回415(Unsupported media type)错误,后台无法获取数据.如下图所示: 在尝试解决这个问题的时候,我们首先要理解一下概念: @req ...
- Go 语言变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问. Go 语言变量名由字母.数字.下划线组成,其中首个字母不能为数字. 声明变量的一般形式是使用 var 关键字: ...
- Swift基础之CoreData的使用
以前使用过OC版本的CoreData应该很好理解Swift方式,所以这里简单的展示一下,增删改查的方法使用,同时给大家说一下创建步骤,方便大家的使用,转载请注明出处,谢谢~ 步骤一:创建一个Swift ...
- solr和solrcloud
Solr = Lucene + Http(Servlet/REST) + Schema.xml+Solrconfig.xml Solr = SolrSingle + Solr MutilCore = ...
- ROS_Kinetic_29 kamtoa simulation学习与示例分析(一)
致谢源代码网址:https://github.com/Tutorgaming/kamtoa-simulation kamtoa simulation学习与示例分析(一) 源码学习与分析是学习ROS,包 ...
- Python 2.7的字典实现简化版(C语言)
这是一个能自动调整大小的哈希字典,外部接口实现了下列功能. 1.字典级别: 创建字典 dict_new 归零字典 dict_clear 2.键值级别: 查找 dict_search 强制查找 dict ...
- PHP学习(1)——我为什么要学PHP
PHP简介 PHP是一种服务器端的脚本语言,特别适合做web开发.高效.灵活.实用是PHP的特点.PHP最开始是Personal Home Page的缩写,后来正式更名为了"PHP:Hype ...
- TOP-N类查询
Top-N查询 --Practices_29:Write a query to display the top three earners in the EMPLOYEES table. Displa ...
- JQuery插件使用之Validation 快速完成表单验证的几种方式
JQuery的Validation插件可以到http://plugins.jquery.com/上去下载.今天来分享一下,关于这个插件的使用. 简易使用 这第一种方式可谓是傻瓜式的使用,我们只需要按照 ...
- SQL Server专家的10个秘诀(翻译加注解)
当你点开这篇文章的时候,如果觉得没有读下去的必要,也希望你能拉到最后看看那几行字! 原文出处:https://technet.microsoft.com/en-us/magazine/gg299551 ...