《龙的城堡》儿童学编程Scratch2之“事件”讲解
今天我们通过制作一个简单的电子作品《龙的城堡》来学习一下Scratch2中的“事件”。 “事件”相当于整个程序的各种“开关”、“按钮”、“启动器”。从我们前面的学习中也会发现这些“事件”是每个程序必不可少的部分。
《龙的城堡》界面之一好了,我们开始吧!今天的内容非常简单、却非常重要。用简单的功能实现很美好的东西也许就是儿童编程软件Scratch的初衷之一吧。
我们首先简要概括一下“事件”都包括哪些内容,然后就进入游戏《龙的城堡》的制作。
如下图所示,“事件”分为八种类型,大部分通过字面很容易理解代码块的意思。如当小绿旗被点击时出发之后的程序、当键盘上某一个按键按下时候、当角色被点击时候、当切换到某一背景时候、当声音响度(或者计时器、视频移动)大于某一数值的时候触发相应的程序。还有就是关于“消息事件”,能够给编程带来极大的便利,我们一会儿在案例中详细讲解。
事件命令列表下面就开始我们的奇幻之旅。
1.先计划、再行动——游戏目标设定
磨刀不误砍柴工,我们先不要急着编写程序。目标明确了在行动,往往事半功倍。这个过程也是锻炼大家策划、计划、逻辑、思考等一系列能力的重要步骤。
故事背景:
龙妈妈在一个古老的城堡里寻找她的三个孩子,她的孩子都能够隐身。在不同的房间里,龙妈妈呼唤孩子们,孩子依次随机现身,分别跟妈妈打招呼。龙妈妈带着她的孩子在古堡里游荡,同时龙妈妈也能展示绝技。
目标细化:
龙妈妈的功能:
(1)游戏开始之后,龙妈妈不停在房间里移动,碰到边界就折返;
(2)点击龙妈妈,她会吐火;
(3)通过控制左右键,能够控制龙妈妈的方向;
(4)通过控制上下键,能够控制背景的切换;
(5)按下空格键、龙妈妈召唤宝宝们;
(6)当背景切换到某一背景时候,龙妈妈展现特技(放大、变色);
(7)游戏开始五秒后龙妈妈旋转一圈。
龙宝宝的功能:
(1)开始隐藏、听到龙妈妈的召唤现身;
(2)听到妈妈的召唤要回应;
(3)跟妈妈一样在舞台游荡;
(4)当被点击时喷火。
2.建造城堡、召唤神龙——背景和角色的设置
首先,我们设置背景,在舞台信息区点击舞台,图中①。屏幕中央出现“背景”选项卡,点击②,选择两个城堡的背景,记住背景的名字。效果如下图所示。
在角色列表区点击“角色库”按钮,选择龙的角色。然后删除小猫的角色。点击在指令块面板出现“造型”选项卡,可以看出这个角色有两个造型,其中一个能够喷火,看起来很酷。在角色列表右击鼠标可以复制角色,不过我建议大家不要着急,先编辑代码,之后再进行复制,这样能够将角色身上的代码一并复制过来。不过你是个好奇宝宝,没关系,先复制几个,然后再删掉好了。
3.当把上帝把——为各个角色加上神奇的功能
龙妈妈的功能实现:
(1)游戏开始之后,龙妈妈不停在房间里移动,碰到边界就折返
需要说明一下,当龙碰到边界后开始折返,但是头时向下的,怎么解决这个问题呢,两种方式,见下图:
(2)点击龙妈妈,她会吐火
(3)通过控制左右键,能够控制龙妈妈的方向
(4)通过控制上下键,能够控制背景的切换
(5)按下空格键、龙妈妈召唤宝宝们
(6)当背景切换到某一背景时候,龙妈妈展现特技(放大、变色)
(7)游戏开始五秒后龙妈妈旋转一圈
龙宝宝的功能实现:
现在角色列表里还没有龙宝宝,怎么办?你当然可以从角色库中再拉一只龙出来。但是还有更好的办法,就是复制一下龙妈妈,然后缩小一下尺寸,我们惊奇的发现,代码也复制了,运行程序之后,小龙具有和妈妈一样的功能。工具位置如图:
我们保留左右移动的功能和吐火的功能,其他的代码块可以删除。怎么样,是不是效率高了很多哇?
(1)跟妈妈一样在舞台游荡
这个功能在复制的时候就已经继承了龙妈妈的代码。
(2)当被点击时喷火
这个功能在复制的时候就已经继承了龙妈妈的代码。
(3)开始隐藏
加一个“隐藏”命令就可以了。
(4)听到龙妈妈的召唤现身、并回应
这个功能比较听起来比较神奇,小龙怎么能听懂妈妈的话呢?这里就用到了上文中提到的“消息事件”——龙妈妈广播一条消息,小龙听到这个消息就现身。
具体操作如下,拖拽“当接收到某消息”代码块到编辑区,下拉菜单中选择新消息,弹出的文本框中输入消息名字“孩子们都出来吧!”这个消息名可以起其他的名字,这里为了方便理解,才这样起名。
最后龙妈妈的代码像这样:
小龙听到了会怎样呢?我们也需要在小龙身上编辑代码,如下:
4.好的作品都是慢慢修改出来的——调试和优化
现在的作品基本上实现了我们设想的功能,但是还有很多能够完善的地方。就让我们开始吧。
(1)多加几只喷火小龙
一条小龙怎么够,多加几条试试。这个只需要用复制的功能就可以啦!SO EASY!
(2)实现不同小龙差异化
等待的事件采用随机数。三条小龙跟妈妈说的话进行区别,如三条小龙的名字大毛二毛三毛加入进去。这里就是面向对象编程的“多态”,以后我们学习其他面向对象语言的时候会经常用到这个概念。
(3)如何让龙宝宝们都回应完之后,龙妈妈接着说话。 其实很简单,把广播的代码块更换一下就好了。
好了,我们来看一下截止到目前我们的作品吧!
5.反思阶段
想想今天的这个案例给你带来了哪些启发?
每个代码块是不是很简单?
如何用简单的代码块组合成复杂的功能?
尝试着给这个游戏加上音效吧!
你能把这个游戏的变得更好玩么?
附录:完整代码
1.龙妈妈身上的代码
龙妈妈身上完整代码2.龙宝宝身上的代码
龙宝宝身上完整代码