按照预定计划,已经完成了CN7炮弹的发射试验。接下来要进行大批量炮弹发射测试,用于炮台与炮弹的可靠性验证。以便应对大量小行星的来袭了。
课前回顾
训练师,通过完成武器发射测试,你应该能掌握如下内容了:
- 了解“当”积木的作用与使用方法;
- 了解“侦测”积木盒子里的积木可以获取程序执行过程中的各种信息;
- 了解“鼠标按下”积木的作用与使用方法;
- 可以组合自定义鼠标点击事件的积木;
- 了解“移到”积木的作用与使用方法;
课前准备
1、点击下方按钮,下载“地球保卫战3.bcm”源码文件。
2、在谷歌浏览器地址栏输入 https://vipcode.fun/kitten编辑器 网址进入源码编辑器,或者直接点击前面的链接进入。
3、导入“地球保卫战3.bcm”编程源文件。
课程目标
我们需要每点击一次鼠标,就发射一枚炮弹;
思考
为什么现有的程序,没办法实现点击一次就发射一枚炮弹?
原因就在我们规划的任务逻辑出现了问题,请看下图。当炮弹发射出去,也就是执行重复向前移动任务。这个流程图规划的脚本只有在点击停止按钮后,才会停下来。否则这个段脚本永远不会结束。联想我们之前所学程序的顺序执行,如果前面的程序没有执行完成,后面的程序就不会执行。这样因为前面炮弹飞行的程序没有完成,当我们再次点击鼠标时,就没办再执行这段程序了。从而就导致了程序没办法实现点击一次再发射炮弹了。这个在编程中有个专业名词“程序阻塞”。意思就是程序执行某些任务后,没有完成,导致其他任务无法执行。举个生活中的例子。太阳刚从东方升起来,你能让太阳马上再从东边升起吗?答案肯定是不能,因为太阳还没下山,所以阻止了太阳再次升起来。这就是程序阻塞。
通过太阳的例子,训练师一定想到了,要是可以像孙悟空有分身术,就可以再变出一个太阳,不管第一个太阳有没有下山,如果有第二个太阳,那有可能马上从东方升起来。所以通过创建多个炮弹角色,就可以实现不用管前面炮弹飞行脚本是否结束,马上可以点击鼠标让后面的炮弹飞了。按照训练师的想法,我们来试一下;创建3个炮弹角色。按照我们之前所学的流程图可以知道,当由相同事件启动的程序可以用一个流程图描述。再加上这个三个炮弹执行的任务是一样的,那就可以画出如下的流程图
我们按照这个流程图规划的任务来执行,一旦点击鼠标,左、中、右三个路径所指向的任务会同时执行。这样的程序效果就会让三个炮弹同时,移动到炮台、瞄准、然后发射出去,并且这三个炮弹脚本同样不会停止,从而当我们再次点击鼠标时还是因为程序没有结束阻止再次执行。那该怎么办呢?其实创建多个炮弹的思路是对的,不过我们不能一开始就创建多个炮弹。我们可以点击一次鼠标,就像孙悟空分身术那样创建一个相同的炮弹,让这个炮弹去执行自己的任务。这样设计的好处是,鼠标点击去执行创建炮弹的任务。炮弹去执行移动、瞄准、飞行的任务。鼠标和炮弹的任务互不干扰,不管炮弹程序是否停止。鼠标点击创建炮弹以后,鼠标的脚本就结束了,不会被炮弹程序阻止。当我们再次点击鼠标时,就又可以执行创建炮弹的任务了。所以我们可以这样规划流程图;
这里创建炮弹任务,就可以用事件盒子里的克隆积木。也就是将当前炮弹复制一个。这个积木就是用来复制积木后面指定的角色。当前给炮弹编程,所以只要选择“自己”就表示创建一个新炮弹了。
我们看“当新炮弹被创建”事件,乍一看我们又要做一个自定义事件积木了。但是因为这个工作比较复杂,所以Kitten编辑器给我们准备了一个积木。用事件盒子里的“当作为克隆体启动时”这个积木。因为我们再创建炮弹后,就会发生克隆体启动这件事,所以就用这个积木来作为新炮弹的启动事件了。
编程脚本如下图所示
我们点击开始,看看防御炮台是不是可以每点击一次鼠标,就发射一枚炮弹。
课后回顾
通过这节课的学习,我们学到了如下内容。训练师你是否记得呢?
- 通过分析流程图,了解什么是程序阻塞;
- 如何通过克隆创建相同的角色;
- 了解“作为克隆体启动时”这个事件。
样例程序
作品代码文件下载
点击下方按钮,可以下载老师完成的代码,导入之后,可以对比一下,咱们互相进步。编程没有绝对的标准答案,只有更加优化的方案!
加油哦,训练师!