合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 复习上节课学习的内容 小朋友们好!我是阿达老师。我们上节课学习了使用自定义模块制作自已的算法小积木,用自已制作的小积木代码块实现了绘制迷宫围墙的效果,这节课我们继续完成《灵找蛋糕》游戏项目, ## 本节课知识点 使用循环算法结构和条件判断算法结构操作杰瑞的移动 ## 实现分析 我们要实现通过键盘上的方向键控制它上下左右移动,并且不能穿过围墙(视频展示:杰瑞上下左右移动动画效果)* ## 视频实战 首先打开网易卡搭的编程环境,从事件模块组拖动`当绿旗被点击`代码块到脚本区,从控制模块组里拖动`如果...那么`代码块放到当绿旗被点击的下方 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuoowjknt9j209m04g0ss.jpg) 切换到侦测模块组,拖动“按键空格键是否被按下”到前面的条件判断语句当中,把“空格键”改成“右移键”,这时这段代码的意思就是“如果键盘上的右移键被按下,就执行这个判断条件里的代码”, 我们在条件结果当中拖入`面向90度方向`、`将x坐标增加5`两段代码 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuop0q3aazj20dy0720tp.jpg) 这时我们点击右移键,调试一下,看看杰现是不是能向右移动了,小朋友们,你们发现了什么?杰瑞没有动对不对?那是因为什么呢? 之前我们讲过电脑会按照我们写好的程序一步一步顺序的执行,在我们现在写好的代码中,当绿旗被点击时,它会顺序执行下面的代码,也就是它会判断右移键被按下了吗?当然我们在点击绿旗的一瞬间,右移键当然是没有被按下的,所以程序不会执行判断条件中的`将x坐标增加5`的代码块,那杰瑞自然也就不能移动了 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fu6ubped1gj21em0vsaoa.jpg) 接下来程序继续执行,但是我们的程序下方已经没有任何代码了,所以,这个算法结构已经执行完毕,所以我们现在需要实现一段不停的判断的功能,我们知道无限循环可以实现这个功能的,我们从控制区拖动`重复执行`代码块到脚本区 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuop6lb2ktj20fa08yt9x.jpg) 现在让我们来看一下添加了无限循环后程序是如何运行的吧,当绿旗被点击时,程序就进入了无限循环中,首先它会判断一次键盘的右移键被按下了吗?由于这个时间向上键没有被按下,所以不会执行中间的`将x坐标增加5`语句,然后我们的程序会继续向下执行,当执行到程序末尾,由于添加了无限循环代码,程序会返回到刚刚开始的地方,也就是再次判断键盘右移键是否被按下,这个时候键盘的右移键还是没有被按下,程序执行完这次循环后,又会回来再次判断键盘上的右移键是不是被按下,这个时候如果我们按下了右移键,程序就会执行`将x坐标增加5`的代码了,当然无限循环中的判断会一直不停的进行,我们只要按下向右移键悟空就会一直向 右移动,如果这个时候我们松开了右移键,程序再执行右移键是否被按下的代码时,发现右移键没有被按下,那程序就不能执行`将x坐标增加5`的代码了 这下是不是清楚了,我们的算法脚本里缺少了一个循环判断的代码,把它加进来,现在程序就可以正常的运行了 同理,我们现在把向左移动、向上移动、向下移动的代码一起加进来,老师这里就不一一说明了,相信聪明的小朋友能够非常清晰的这三个方向的功能实现代码了,阿达老师把完整的代码直接帖过来,和老师一起对比一下,你写的代码是不是和阿达老师一样呢? ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuop90qvdnj20ek0j4n0n.jpg) 好了,现在我们就完成了杰瑞上下左右移动的功能,但是当我们使用上下左右键操作杰瑞移动时,杰瑞会跑到迷宫围墙的外面去,这是不符合我们的场景预设的,我们需要把这个问题解决掉, 在解决这个问题之前,我们还是要做一下分析,我们通过观察发现迷宫的围墙都有相同的颜色是不是?所以,我们可以使用***角色碰到颜色***的判断条件来实现这个效果 我们从控制模块组里拖动`如果...那么`代码块放到脚本区,从侦测模块组里拖动`碰到颜色`代码块放入到条件代码块的判断位置,点击一下`碰到颜色`代码块里的颜色,这里鼠标指针变为了小手造型,我们现在移动鼠标,现在`碰到颜色`代码块时的颜色跟随鼠标指针会发生变化,我们把鼠标指针移动到舞台区的栈道处,这时`碰到颜色`代码块里的颜色定格为了围墙的颜色,点击鼠标左键,这个围墙的颜色就同步到`碰到颜色`代码块里了,这段条件代码的意思就是:“如果杰瑞碰到围墙的颜色就让他执行条件判断里的代码”, 那么我们为了不让杰瑞横穿围墙,需要在判断结果里添加哪些算法呢?我们来理一下,在一段循环代码里,如果杰瑞现在执行的是`将x坐标增加5`,那么当他碰到围墙的时候我们让他执行`将x坐标增加-5`,那杰瑞+5的代码和-5的代码抵消了,杰瑞是不是就停下来了啊?所以,我们`将x坐标增加5`的代码块拖入刚刚颜色判断的代码段里,然后将增加5的数字改为增加-5,代码如下: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1futd4r2wyvj20cm08e0tk.jpg) 我们再运行一下试试, mp4 好了,杰瑞现在可以在围墙内移动了,一只萌萌哒小老鼠已经在开心的四处找食物了,我们今天的课程就到这儿吧,下节课我们完成甲虫代码的实现 ## 小灶时间