(NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
2015-10-24 20:27
441 查看
下面修改最为关键的matchRun方法里的代码:
主要变化都在block回调里,所以只贴出其中的内容.
主要逻辑是在比赛完毕后更新游戏状态.如果玩家赌对了则资金总数加上押注的数目,否则减去该数目.
为了区分出赢钱和输钱,我们在GameInterface类中添加新实例方法,首先改动接口声明:
然后再到GameInterface.m中实现该方法:
大体上是根据color参数动态改变状态标签的颜色,最后复原原来的颜色.
这一阶段新增的游戏逻辑完成的差不多了,下面就是实现GameOver的情形了.
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的情形了.
相关文章推荐
- 峰回路转,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++实现基于控制台界面的吃豆子游戏
- 纯javascript实现的小游戏《Flappy Pig》实例