* * * * *
* * * * *
## 复习上节课学习的内容
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)
我们已经学习四个游戏的制作了,已经初步掌握了一些编程的知识了,后面还有更多的游戏等着我们去完成哦,我们下节课见
* * * * *
* * * * *
**阿达老师-孩子身边的编程专家**
*完整课程请关注阿达老师,主页里有完整的课程目录和观看地址*
- 简介
- 第二章-星星猎手
- 2.1 玩玩游戏吧
- 2.2 角色到位!
- 2.3 猫咪动起来
- 2.4 海马动起来
- 2.5 海马和猫咪碰上啦
- 2.6 抓海星啦!
- 2.7 抓了几个海星?
- 2.8 更多的海马过来啦
- 第三章 寻找蛋糕(迷宫类游戏)
- 第一课 使用画笔绘制迷宫围墙
- 第二课(1) 键盘操作杰瑞移动
- 第二课(2) 解决杰瑞横穿围墙问题
- 第三课 甲虫狂潮
- 第五课 幽灵出没
- 第六课 收获金币
- 第四章 黑洞大作战
- 4.1 玩玩游戏吧&分析制作思路
- 4.2 level1级别的物体行动
- 4.3 黑洞转起来
- 4.4 吞噬物体&记录分数
- 4.5 黑洞变大
- 4.6 leve2 级别的物体
- 4.7 level2吞噬、level3吞噬
- 4.8 游戏做好啦!
- 第五章 灵药战争
- 5.1群魔乱舞
- 5.2灵药惊现
- 5.3闪转腾挪
- 5.4大功告成
- 第六章 跳跃的猴子
- 6.1 part1