(NO.00001)iOS游戏SpeedBoy Lite成形记(八)

前一篇提到,如果要想动态修改选手的速度需要在update方法中添加代码.

因为update方法在游戏每一帧都会调用,所以我们不可能修改的太频繁.否则一来对性能有影响,而来玩家表现的极不自然,像抽风一样.

所以我决定,在一场比赛中每位选手的速度最多只能修改5次,先在GameScene中添加如下静态变量与常量:

static const NSInteger MaxChanged = 5;
static NSInteger totalChanged = 0;

要实现速度的变化在update中实现,可是怎样实现呢?
因为我们选手移动是通过CCActionMove来做的,立即可以想到,在不改变代码逻辑,最简单的方法就是用CCActionSpeed来修改Move动作的速度.所以我们要在Player类中新增实例变量,以便后来引用.

打开Player.h文件,在接口中添加一个新属性:

@property (nonatomic,weak) CCActionSpeed *speed;

这个属性不在Player的初始化中赋值,而是在实际比赛中赋值.

回到GameScene.m中,我们尝试实现一下update方法:

-(void)update:(CCTime)delta{NSInteger fork = (CCRANDOM_0_1() * 100)+1;if (_matching && fork%91 == 0 && totalChanged < MaxChanged ) {for (Player *player in _players) {NSInteger negMul = arc4random_uniform(2) == 0?1:-1;CCTime rndSpeed = (negMul * CCRANDOM_0_1())+1;player.speed.speed = rndSpeed;}totalChanged++;}
}

代码逻辑比较清晰,简单解释下:
首先判断速度修改的前提条件是否达到,如果不符合3个条件中的任一个,则不会执行修改逻辑代码.这三个条件分别是:

  1. 比赛已经开始
  2. 随机数fork可被91整除
  3. 已修改次数小于最大修改次数

增加前提条件的原因前面已经说过了,是因为我们不想选手速度修改的太过频繁.各位童鞋可以根据自己的实际需求进行调整,这个限制条件并不是绝对的.

从上所述,可以知道无论如何每位选手最多也只能被修改5次速度,我觉得在这里比较合适.

下面的代码比较简单了,就是生成一个随机的速度值,它是一个比率在0到2之间,如果小于1则表示减速,如果大于1表示加速,等于1表示速度不变.

最后别忘了更新totalChanged的值.
哦鸟!接下来又到了真正修改matchRun方法的时候了 ;)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】 命令收集

目录命令 转到home: cd ~ 转到目录的上层&#xff1a; cd ../ 转到目录的上上层&#xff1a; cd ../.. 返回进入当前目录前所在目录&#xff1a; cd - 复制文件&#xff08;将文件file复制到目录a下&#xff09;&#xff1a; cp file/ a 复制 软件安装 -删除 删除软件&#…

架构师之路(1)---面向过程和面向对象

1、引言 机算机科学是一门应用科学&#xff0c;它的知识体系是典型的倒三角结构&#xff0c;所用的基础知识并不多&#xff0c;只是随着应用领域和方向的不同&#xff0c;产生了很多的分支&#xff0c;所以说编程并不是一件很困难的事情&#xff0c;一个高中生经过特定的训练…

Servlet与缓存

Servlet类请求缓存&#xff1a;response.setDateHeader("Expires",System.currentTimeMills()1000*60*60) ;刷新缓存&#xff1a;请求头 If-Modified-Since服务器 lastModified请求头 和 服务器 进行比较 决定是否缓存转载于:https://www.cnblogs.com/Knuth/archive/…

HTTP快速入门

一、tomcat端口号设置为80&#xff0c;访问时候可以不加&#xff1b;http协议1.1版本可以复用连接&#xff0c;请求结束后会稍微等会&#xff1b; 二、 表单&#xff0c;get方式提交&#xff1a; 三、user-agent告诉服务器是哪个浏览器&#xff0c;代码中解决兼容性问题&#x…

vs2008生成自定义dll,VS2008发布、生成网站时设置固定的dll文件名

在用VS2008发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定生成文件名如何固定呢&#xff1f; 有以下两种方案&#xff1a; 一、每个页面的程序集分别生成对应的dll; 方法&#xff1a;在“发布网站”的选项中&#xff0c;勾选“使用固定命名和单页程…

oracleI基础入门(8)--table--MINUS

MINUSMINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果&#xff0c;然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话&#xff0c;那这一笔资料就被去除&#xff0c;而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于…

分类(二):基于向量空间模型的文本分类

2019独角兽企业重金招聘Python工程师标准>>> 利用向量空间模型进行文本分类的思路主要基于邻近假设&#xff08;contiguity hypothesis&#xff09;。 邻近假设&#xff1a; 同一类的文档会构成一个邻近区域&#xff0c;而不同类的邻近区域之间是互不重叠的。 1、Ro…

Request请求对象

一、Request对象由服务器创建&#xff0c;我们使用 浏览器访问服务器资源原理&#xff1a; 二、Request体系结构 其中&#xff0c;servlet 的service()方法参数列表是 servletRequest对象&#xff0c; HttpServlet 的 doGet()和 doPost() 方法参数列表是用的 HttpServletReques…

WinDBG咒语

p - step t - trace pa - step to address ta - trace to address pc - step to next call tc - trace to next call tb - trace to next branch (只适用于内核调试) pt - step to next return tt - trace to next return ph - step to next branch th - trace to next branch …

C#复制文件到指定文件夹

C#复制文件到指定文件夹 2010-06-04 16:09如&#xff1a; 路径&#xff1a;“D:/a/b” 有如下文件 P1009.txt Z1009.txt T1009.txt 复制到 E:盘下&#xff0c;自动建立一个以日期为文件夹名的文件夹下。 可以使用Process,用它打开CMD,然后执行DOS命令!(可以设置不打开CMD窗口…

Walle 瓦力 web部署系统

Walle 一个web部署系统工具&#xff0c;可能也是个持续发布工具&#xff0c;配置简单、功能完善、界面流畅、开箱即用&#xff01; 安装步骤&#xff1a; 1. git clone 首先配置成功&#xff08;去百度找答案&#xff09; 打开git bash命令窗口执行&#xff1a; git clone gitg…

mysqlbinlog恢复误删数据

概述 代码bug&#xff0c;在处理上传出现异常时执行了DELETE FROM t_resource WHERE resource_id ? OR parent_id &#xff1f;因为OR条件导致用户的上传的所有数据被清空了。 show 查看是否有开启log-bin备份 show variables like log_bin 欣慰的是&#xff0c;已经开启了二…

Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门

概述 作业调度的目标在于按照预先确定的时间和指定的顺序来确保高效的数据处理流程&#xff0c;从而最大限度的使用系统资源。批处理流程是一种在无需最终用户干预的方式下在后台通过顺序方式运行的操作。 Windows XP系统也自带了“任务计划”&#xff0c;它是一个简单任务调度…

博弈论——关于Nim游戏和SG函数的几个链接

今天做了一道博弈论的题目&#xff0c;正好去找找相关资料再复习一下。 网上能找到的都是同样的文章&#xff0c;不过我觉得足够了&#xff0c;Nim游戏百度百科里说的很详细&#xff0c;包括公式、证明之类的 http://baike.baidu.com/view/1101962.htm 而对于SG函数&#xff0c…

【讨论】新一轮互联网的泡沫即将破灭,大量低级别的码农将被淘汰

最近看到BAT减少招聘&#xff0c;互联网企业倒闭潮开始。今年的营收额应该也有很大程度的下降&#xff0c;然后我进行了深刻的思考&#xff0c;我觉得新一轮的互联网泡沫将会破灭&#xff0c;行业面临新的洗盘。 虽然现在互联网行业还是如火如荼的进行&#xff0c;很多人没有感…

Request登录案例

一、分析和设计 1、需求 2、页面 3、druid连接池 4、jar包 5、需求设计 二、代码实现 1、web_WEB-INFO_lib使用之前要先将jar包加入工作空间&#xff0c; 2、JDBC工具类 3、Dao层持久化层 其中&#xff0c;有异常除了输出控制台日志&#xff0c;还可以输出流写入到一个文件中记…

Combine two strings into one.

CONCATENATE str_tmp % into str_tmp. 转载于:https://www.cnblogs.com/gangjing/archive/2009/03/13/1410623.html

基于winpcap的NDIS在IE浏览器,360安全浏览器hackwww.360.cn

winpcap(windows packet capture)是windows平台下一个免费&#xff0c;公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。winpcap 驱动各项功能1. 捕获原始数据包&#xff0c;包括在共享网络上各主机发送/接收的以及相互之间交换的数…

斑马Zebra驱动下载

Zebra GT800 点击进入下载页-> 自动安装包【WINXP/WIN7/WIN8】点击进入下载页-> 添加打印机向导【WINXP/WIN7/WIN8】热门下载 Zebra GK888t Zebra 888-TT/888-DT Zebra 105SL Zebra ZM400 Zebra TLP 2844 Zebra GT800 Zebra GK888d Zebra LP 2844 Zebra Z4Mplus Zebra S4…