(NO.00001)iOS游戏SpeedBoy Lite成形记(七)_weixin_34228387的博客-程序员宝宝

因为我们之前在GameScene中建立的2个数组,分别为player和label的数组.大家可以注意到其中每个元素是一一对应的.

知道了这层关系,我们尝试来更新matchRun方法:

CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{
            _finishedCount++;
            [player endMatch];

            if (_finishedCount == 1) {
                _bestElapsedTime = player.elapsedTime;
            }

            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.visible = YES;

            if (_finishedCount == PlayerCount) {
                _finishedCount = 0;
                _matching = NO;
            }
        }];

其实需要改动的只有回调block中的代码,主要是增加了设置标签内容以及使标签可见的功能.

首先取得与选手对应的标签,通过选手的编号:因为第1赛道的选手编号为0,以此类推.
接下来计算其他选手的成绩与最好成绩的差值,用来后面显示”+xxx秒”,当然最好选手的成绩直接显示秒数即可,其余选手显示与最好成绩差多少秒(即超过多少秒).
最后使标签可见即可.

执行效果如下:

这里写图片描述

Ok!到这里一切都还好.

但是有一点问题.大家可以注意到现在每位选手的最终比赛结果是在比赛前就确定好的,因为在matchRun方法开头就设置了移动动作的经历时间.所以开头领先的选手最后一定是第一名!

这个和实际比赛不符.我们更希望看到某位选手开始领先后被追上,或是先是落后最后却成为NO.1的情形.所以我们必须找到一种办法来动态调整选手移动速度的方法:一会让他快一点,一会让他慢一点.

这意味着我们必须在GameScene的update方法中动点脑筋,这也是下一篇要完成的内容.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34228387/article/details/90652271

智能推荐

2020年深圳杯C题_zengshengli775的博客-程序员宝宝_深圳杯c题

C题:无线可充电传感器网络充电路线规划摘要物联网的快速发展带动了无线传感器网络WSN在生活中的广泛运用。无线传感器网络中包括若干传感器以及一个数据中心,这些传感器的电池均需要移动充电器提供能量来维持正常的工作。移动充电器的能量一方面用于传感器的充电,另一方面用于充电路上的消耗。为减少移动充电器路上消耗,提高能量利用率,需要合理规划移动充电器充电路线。针对问题一,要使得能耗最小化,就要保证移动充电器行走的路程最小,所以路线图可看成网络图,利用地球半径和各传感器的经纬度计算可以得出各个点之间的距离,

【暑假】[深入动态规划]UVa 1628 Pizza Delivery_hahalidaxin的博客-程序员宝宝

UVa 1628 Pizza Delivery 题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51189思路:  本体与修缮长城一题有所相似。所以解法有相似之处。  不同之处就是本体可能会产生负情况,即送餐时间晚了客户会反过来找你要钱所以需要放弃,但修缮长城只有费用,顺手修了肯定是一个不错的选择

小程序使用npm_Aubrey-廖的博客-程序员宝宝

  小程序第一次使用npm在需要的目录里面使用npm init 命令,然后确认就好了.想引入哪一个npm包时,直接npm install (包名称) --production就可以   在所需要使用组件的json 文件下:"usingComponents": {"slide-view": "miniprogram-slide-view"}然后<...

ansible(replace模块)批量修改centos8、ubuntu、centos7网卡地址_临江仙我亦是行人的博客-程序员宝宝_ansible replace

[[email protected] ansible]#cat change_network.yml---- hosts: all remote_user: root vars: old_ip: "172.17" new_ip: "172.18" tasks: - name: find centos8 network name shell: find /etc/sysconfig/network-scripts -name "ifcfg*" regi

BUAA面向对象设计与构造——第二单元总结_a5a5a554321的博客-程序员宝宝

BUAA面向对象设计与构造——第二单元总结第一阶段:单部傻瓜电梯的调度第二阶段:单部可捎带电梯的调度  (由于我第一次写的作业就是可捎带模式,第二次只是增加了负数楼层,修改了一部分参数,因此一起总结。)  1.设计策略  这次作业我设计了两个线程:Elevator和DealWithInput,前者模拟电梯,而后者用来处理输入。队列PersonQueue作为一个单例模式...

虚拟机ping不通的几种常见解决方法_俗人的浅吟^ω^的博客-程序员宝宝_虚拟机ping主机ping不通

配置虚拟机网络是搭建Hadoop集群的关键一步,但是这里很容易出现故障,为此,这篇博客介绍了几种常见ping异常的解决方法Ⅰ,虚拟机与虚拟机不相通我们在测试网络的时候,首先需要测试能不能连接到同一网段的虚拟机,比如我的伪分布式集群有三个机器(master:192.168.0.2 ,slave :192.168.0.3,slave2:192.168.0.4),我在master中执行ping 192.168.0.2,若是ping不到,1,查看网卡配置,是否填错ipvi /etc/sysconfig/ne

随便推点

Android Studio使用开源库的操作_乌龟爱吃肉的博客-程序员宝宝

如何在Android Studio中使用开源库和jar包。

【思维】HRBUST 1612 方格问题_两米长弦的博客-程序员宝宝

方格问题Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 546(307 users)Total Accepted: 317(281 users)Rating: Special Judge: NoDescription在一无限大的二维平面中,我们做如下假设:1、  每次只能移动一格;2、  你可以向左走,可以向右走,也可以向上走,但是不可以...

数组_JhonXie的博客-程序员宝宝

数组变量:存储单个元素的内存空间数组:存储多个元素的连续的内存空间,相当于多个变量的集合数组名:整个数组只有一个名字数组索引:编号从0开始,属于数值索引数组名[索引],${ARRAY_NAME[INDEX]}注意:bash-4以及之后的版本支持自定义索引格式,而不仅仅是0,1,2,3......

STM32 缓上电导致死机的问题分析_w_virgil的博客-程序员宝宝_stm32 上电死机

这里写自定义目录标题场景现象问题分析POR 和 PDRBOR分析解决方法场景现象在一些供电比较特殊的场合,如太阳能供电,电池供电等,可能会导致稳压芯片输出的3.3V 上升缓慢。 在这种供电情况下,会导致MCU死机, 让人感觉的程序没有跑起来。问题分析在此情况下,MCU 为什么跑不起来呢, 笔者以STM32L072 芯片为例, 具体的分析一下。我们先了解 STM32电源控制中有三个复位方式:上电复位 (POR)掉电复位(PDR)欠压复位(BOR)POR 和 PDRMCU供电电压为VD

visio 2013 如何制作形状的剪切、联合、组合、拆分、相交、剪除功能_weixin_34092370的博客-程序员宝宝

via 李昇 sean 的博客今天要画一个图,总是找不到 visio 2010 里面的形状的 “联合”、“组合”、“拆分”、“相交”、“剪除” 等功能,在百度和 google 上都无法搜到答案,大家都是在提这个问题(2003 里面的这些功能区哪里了,是不是微软给删除了等等),不过就是没有人回答。只好去英文的网站上去找答案,最终找到了...

java基础------抽象类和接口_________Ruby的博客-程序员宝宝

什么是抽象类:用abstract来修饰的类就称为抽象类,用abstract来修饰的方法成为抽象方法,子类继承抽象类的时候必须实现父类的抽象方法,(抽象类可以没有抽象方法,但是如果抽象类没有抽象方法,或者没有其他类继承于它,那么抽象类就失去了意义) 什么时候用抽象类:   当具体实现需要子类来完成的时候,就可以用抽象类。 抽象类和普通类的区别:1、抽象方法必须是publi

推荐文章

热门文章

相关标签