💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
* * * * * * * * * * ## 复习上节课学习的内容 Hi,小朋友们!我是阿达老师。我们在前面的课程中完成了小怪物和灵药两部分代码的实现效果,今天我们继续完成小阿达的 “闪转腾挪”效果,let's go ## 游戏背景介绍 我们移动鼠标,小阿达要能够随着鼠标移动而移动,不仅要去收集灵药,又要避开逼近过来怪物侵袭,我们收集到一颗灵药可以加1分,但被小怪物攻击一次之后就会减3分,分数超过20我们就顺利过关,分数下降到0以下,游戏就失败了,在这个快节奏的游戏灵药争夺战中,小朋友们需要快速反应去收集灵药,同时还要躲避怪物的步步紧逼 ## 实现分析 1、小阿达能够随着鼠标移动,并且可以收集灵药 2、小阿达收集到足够多的灵药后,能够提示成功信息 3、小阿达被怪物攻击次数过多时,能够提示失败信息 ## 本节课知识点 使用`碰到角色`功能来实现分数的加减 使用`广播`消息功能来设置游戏的准入和准出条件 ## 视频实战 我们打开网易咔嗒,在我的作品中选择《灵药战争》项目,进入scratch的编程环境 切换到灵药的脚本区,我们先建立一个绿旗点击事件,从事件模块组里拖入`当绿放被点击`代码块,首先来初始化一下得分,从数据模块组里拖入`将得分设定为0`代码块,再来切换一下小阿达的造型,使它在随着鼠标移动的时候看上去像走路的样子, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva2of33xhj207806wq3c.jpg) 接下来我们要实现小阿达随着鼠标移动的效果,这个效果的实现方式,我们在《星星猎手》里已经使用过了,从动作模块组里拖入`移到鼠标指针`,放入上面切换造型的循环代码中就可以了, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva2qvvfioj208y07qjry.jpg) 我们来点击绿旗调试一下吧,现在小阿达已经可以随着鼠标指针快速移动了,赞 为了增加紧张的气氛,我们在角色区点击右键多复制几个小怪物和灵药, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva60xn65mj20kk0ds0uj.jpg) 接下来,我们分别设置一下“碰到怪物”和“碰到灵药”时分数加减的效果 从事件模块组里再拖入`当绿旗被点击`代码块,从控制模块组里拖入`如果...那么...`代码块,从侦测模块组里拖入`碰到鼠标指针`代码块,将“鼠标指针”改为“怪物1”,从运行符模块组里拖入`**或**`代码块,将两段代码组合一下就是下面的结果 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6ae0zgqj20mi020aa5.jpg) 然后,再从运行符模块组里拖入`**或**`代码块,把“怪物2”和“怪物1”继续组合起来, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6ctwmivj211803oq3a.jpg) 同理,我们再用一个`**或**`代码块,组合一下“怪物3”,最终的结果代码为: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6ewykfzj20hm02qaa5.jpg) 我们把这个复杂的条件判断拖入刚刚的条件判断语句当中,在条件的结果语句当中,拖入`将得分增加-3`代码块,代码如下: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6ghg6y1j20l204q0t5.jpg) 这段判断代码的意思就是:“如果小阿达碰到怪物1或者碰到怪物2或者碰到怪物3,则得分减3”, 我们用同样的方式设置一下灵药的判断条件: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6iatex9j20ea03qdg3.jpg) 这段判断代码的意思就是:“如果小阿达碰到灵药1或者碰到灵药2,则得分加1”, 我们把这两段代码组合在一起,并且放入一个无限循环代码块当中 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6jo0to3j20n20awwft.jpg) 有小朋友会问,为什么要放到无限循环语句当中呢?那是因为需要不断的循环的侦测“小阿达碰到了怪物或者灵药了吗”、“小阿达碰到了怪物或者灵药了吗”、“小阿达碰到了怪物或者灵药了吗”......., 否则一旦停止侦测,那这个时候小阿达碰到怪物或者灵药就不会加减分数了, 我们现在来调试一下,看看是不是可以“碰到灵药就加分”、“碰到怪物就减分”呢?相信你已经愉快的玩儿起来了吧?小朋友们,别着急,我们还些收尾工作没有完成呢,我们继续吧 这个游戏,我们什么情况下才算通关呢?下面我们就来设置一下 我们假设得分大于20分就胜利,再从控制模块组里拖入`如果...那么...`代码块,从运算符模块组里拖入`***大于***`代码块,我们设置条件为:“得分”大于20,把这个条件放入判断代码块;从事件模块组里拖入`广播消息`代码块,广播一条新的消息,名称为“success”,把广播的消息放入条件判断的结果当中,代码如下: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6q4js6ej209g05iwer.jpg) 这段代码的意思是:“如果得分大于20就广播一条success的消息,并且停止当前小阿达的所有在执行代码” 我们广播了一条消息,那么也要同时有角色来处理这条消息, 我们导入一个“good job”的角色,从事件模块组里拖入`当接收到success`消息时,执行以下代码, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6wi6z8xj209a08at9l.jpg) 同理,我们再设置一下,当分数小于0时的逻辑,让小阿达广播一条“failed”的消息 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6yhbdnsj20ak058glv.jpg) 当“good job”接收到“failed”的消息时, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva6yhbdnsj20ak058glv.jpg) 切换回小阿达的脚本,把两个得分判断也拖入无限循环的判断当中,那么小阿达最终的代码就是: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva70tjvk6j20pk0kk76x.jpg) 到这里,我们的《灵药战争》项目就结束了,小朋友们是不是迫不及待的要体验一下我们的游戏了啊?老师也很想去玩儿了呢, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fva73w9ogaj20ko0fowgi.jpg) 我们已经学习四个游戏的制作了,已经初步掌握了一些编程的知识了,后面还有更多的游戏等着我们去完成哦,我们下节课见 * * * * * * * * * * **阿达老师-孩子身边的编程专家** *完整课程请关注阿达老师,主页里有完整的课程目录和观看地址*