第12届蓝桥杯Scratch选拔赛真题集锦
编程题
第 1 题 问答题
吃豆人游戏
题目说明
编程实现:
吃豆人游戏: 通过方向键控制吃豆人吃到水果,当水果全部被吃掉后游戏结束。具体要求:
1).点击绿旗,舞台上出现要求的角色与背景;每个格子内有一个水果和一个幽灵,水果不动,幽灵在各自的格子内随机移动;
2).通过上下左右四个方向键,可以控制吃豆人的上下左右移动,吃豆人不可以穿越白色墙壁;
3).吃豆人碰到水果,水果消失;
4).吃豆人如果碰到幽灵角色,任务失败程序停止;
5).吃豆人吃完4个水果,4个幽灵消失,1秒后游戏结束。
查看答案
答案
编程实现
根据题目描述和惠路分析,我们可以分5步来编写程序:
水果角色
吃豆人移动
幽灵来回移动
游戏成功
游戏失败
1.水果角色
水果角色在整个游戏过程中,都是静止不动的,我们首先设置好它们的位置,代码如下:
2.吃豆人移动
游戏开始时,吃豆人位于舞台中心位置,当按下个四个方向键时,分别向上下左右移动,如果碰到白色,则退回移动的步
数即可,对应的在吃豆人角色中编写代码如下:
代码虽然挺长,但大部分代码基本上是相同的,需要注意两点:
11每个按键事件中,都需要进行是否碰到白色的检测。有的同学想精简代码,将颜色碰撞检测拎出来,放在最后面,想法是好的,但会出现角色穿越白墙的小bug;
2.碰到白墙后、吃豆人移动了-5步,移动负数步意味着角色会朝着角色当前方向的反方向移动,注意两个数字要一致,并且不能太大,避免直接越过白墙。
3.必灵来回移动
幽灵角色在各自的格子内随机移动,很多同学首先会想到”在1秒滑行到随机位置“指令,这确实可以实现随机移动的效果,但是看起来不是很自然,我们可以换一种更好的方法。
将幽灵设置一个随机方向,然后以某个速度移动,当角色要超出自己的边界时退回来,同时左转或右转一定的度数,以幽灵1角色为例,编写代码如下:
这里的关键点是角色边界的判断,水平方向和垂直方向上都需要判断两次,一共要判断4次,它们之间是逻辑或的关系。
其它三个幽灵角色的代码也基本一样,这里就不再列出了。
4.游戏成功
如果吃豆人吃掉所有的水果,则游戏成功,所以对于每个水果角色,我们都需要判断一下是否碰到吃豆人,如果碰到,水果角色消失,同时需要记录一下被吃掉的水果数量,如果数量为4,就发送一个成功的广播消息。在水果角色中,增加代码如下:
在判断是否碰到吃豆人时,这里使用了“等待条件“指令,我们已经多次用到这个编程小技巧了,对于只需要判断一次的情况,使用等待条件指令是最简洁的。
其它3个水果角色都需要添加这段代码,注意”将吃掉水果数设为0“指令只需要设置一次即可,游戏成功,需要显示游戏结束效果,切换到结束角色,编写代码如下:
第 2 题 问答题
放大镜
题目说明
编程实现:
放大镜功能。
具体要求:
1).点击绿旗,舞台上出现要求的角色及背景 (放大镜自己绘制)
第 3 题 问答题
乒乓球游戏
题目说明
编程实现:
乒乓球游戏具体要求:
1).点击绿旗,舞台上出现要求的角色与背景;
2).乒乓球随机向舞台下方移动;
3).粉色挡板随围标进行左右方向的移动:
4).粉色挡板接到乒乓球后乒乓球向舞台上方反弹
5).每次粉色挡板接住乒乓球,左上角分数加1;
6).乒乓球落地,游戏结束;
第 4 题 问答题
瞄准镜
题目说明
编程实现:
瞄准镜跟随鼠标移动,当瞄准镜中心移到水果上时,点击鼠标水果消失。
具体要求:
1).点击绿旗时,舞台出现要求的角色与背景;
2).所有水果在舞台中随机移动;
3).瞄准镜跟随围标移动,
4).当瞄准镜中心移到其中一个水果上时,点击围标被击中的水果消失;
第 5 题 问答题
贪吃蛇
题目说明
编程实现:
贪吃蛇游戏:通过控制蛇头方向吃到食物,从而使得蛇身变得越来越长。
具体要求:
1).点击绿旗,舞台上出现面向右侧的蛇头,和随机位置格子里的苹果;
2).通过上下左右四个方向键,控制蛇头的上下左右移动;
3).蛇头碰到舞台边缘后,可以从另一侧的位置出来;
4).每次吃掉苹果(蛇头和苹果在同一格子内,苹果即消失),蛇头后增加一个正方形身体,同时苹果重新出现在随机位置格子内;
5).吃掉6次苹果,游戏结束。
第 6 题 问答题
竹蜻蜓
题目说明
编程实现:
竹蜻蜓是动画角色哆啦A梦中的一个常用道具,戴在头上可以通过大脑意念随意控制飞行。
具体要求:
1).点击绿旗,哆啦A梦出现在地面上,舞台左上角显示能量值100;
第 7 题 问答题
电子白板
题目说明
背景信息:
做一个电子白板,可以用鼠标控制画笔在白板上绘画。编程实现:
用望标控制画笔移动,按下留标就落笔,松开黑标就抬笔。可以在电子白板的下方选择不同的绘制工具。具体要求:
1).点击绿旗,舞台上出现要求的角色及背景,默认选择橡皮;
2).点击画笔图标,出现颜色子菜单,点击可以选择画笔颜色
3).按下鼠标键,可以在白板上绘画 (画笔跟随凰标指针移动),注意不能画到白板外部
4).点击橡皮图标,启动橡皮功能,此时颜色子菜单隐藏,按住鼠标键移动鼠标可以擦掉画出的线,
5).通过点击国标可以在画笔和橡皮工具之间反复切换
查看答案
答案
编程实现
根据题目描述和思路分析,我们可以分三步来编写程序:
点击角色更新颜色值
根据颜色值确定各角色的状态
画笔绘制和擦除
1.点击角色更新颜色值
创建全局变量“画笔颜色“,点击绿旗时,默认为穆皮模式,因此需要将变量的初始值设为0,当点击各个角色时,将变量设置为不同的值即可。
首先是”eraser角色,编写代码如下:
2.根据颜色值确定各角色的状态
有了“画笔颜色"变量,各个角色只需要根据这个变量的值来设置自己的状态即可。对于"penci"角色而言,当变量为0时,即处于橡皮模式时显示未选中状态,否则显示选中状态,对应的代码如下:
对于”eraser角色来说,当变量为0时处于选中状态,否则为未选中状态,对应的编写代码如下:
对于”取色板“角色来说,当变量为0时处于隐藏状态,否则就显示,对应的编写代码如下:
对于“红色“角色来说,和"取色板“一样,当变量为0时隐藏,否则就显示。除此之外,还需要设置造型,如果变量为1,表示当前颜色为红色,需要将角色设置为选中状态,否则就为未选中状态,切换到”红色“角色时,编写代码如下:
为了便于理解,这里直接分成了两个代码块,你也可以合并成一个代码块。相应的,绿色、黄色、黑色三个角色也需要做同样的处理,代码基本一样,这里就不再一一列出了如此一来,每个角色的状态就设置好了,你可以先测试一下这部分的效果,确保完全正确再继续。
3. 画笔绘制和擦除对于画笔而言,可以根据”画笔颜色"变量的值,设置不同的颜色,如果”画笔颜色“为0,即处于橡皮模式时,将颜色设置为白色,绘制出的白色和白色背景相同,从而达到擦除的效果。
需要注意的是,画笔只能在白板范围内绘制,因此,在按下鼠标的时候,还需要判断鼠标的坐标是否在黑色边框内部。切换到”画笔“角色,编写代码如下:
其中自制积木”设置画笔“的代码如下
注意,这里的自制积木不是必须的,之所以分开写是因为代码太长了。不过,使用自制积木后代码的结构其实变得更简单更清晰了国笔要随凰标一起移动,默认情况下,画笔的造型中心是在笔杆中间,这样看起来怪怪的,因此,需要将画笔角色的造型中心设置为笔尖位置,如图所示:
至此,一个简单的电子白板就创作完成了,由于绘制时画笔要跟随鼠标移动,因此需要切换到全屏模式下才能达到更好的效果。
第 8 题 问答题
棒子老虎鸡
题目说明
背景信息:
“棒子、老虎、鸡”是和“石头、剪刀、布”类似的游戏,棒子打老虎,老虎吃鸡,鸡啄棒子。编程实现:
小猫和小狗玩“棒子、老虎、鸡”的游戏。
具体要求:
1).点击绿旗,按下空格键,小猫和小狗同时说出“棒子、老虎、鸡”后,其上方棒子开始随机切换“棒子、老虎、鸡“这三个造型中的一个;
2).当平局时,螃蟹说:“平局”1秒;
3).当小猫赢时,螃蟹说:“小猫赢”1秒;
4).当小狗赢时,螃蟹说:“小狗赢”1秒
查看答案
答案
编程实现
根据题目描述和思路分析,我们可以分三步来编写程序:小猫小狗发出指令
棒子老虎鸡角色切换造型
螃蟹判断输赢
1.小猫小狗发出指令
首先创建好两个变量,分别命名为”小猫“和”小狗“,如图:
绿旗点击时,将小猫移到舞台左下方,当按下空格键时,先说“棒子老虎鸡“,然后将“小猫“变量设置为随机数,其范围为1到3之间,然
后发送一个”小猫出拳“的广播消息,在小猫角色中编写代码如下:
同理,切换到小狗角色,编写类似的代码如下:
2.棒子老虎鸡角色切换造型
棒子老虎鸡1角色在接收到”小猫出拳“广播消息后,只需要切换到变量”小猫“对应的造型即可,对应的代码如下:
同理,切换到棒子老虎鸡2角色,编写代码如下:
和棒子老虎鸡1角色相比,这里多了一个广播消息,其作用是告诉螃蟹角色可以判断输赢了。
3.螃蟹判断输赢
螃釜角色在接收到“裁判“广 播消息后,就根据“小猫“和“小狗“两个变量的值来判断谁输谁赢了,切换到螃蟹角色中,编写代码如下
判断的逐辑比较简单,如果两个变量相等,则说明平局。否则就要分情况讨论了,小猫赢的情况有3种,它们是迈辑或的关系,在每一种情况下,小猫和小狗都有对应的造型,二者之间则是逻辑与的关系。补充说明一点,注意这里的写法、判断的结果有三种情况。一是平局,二是小猫赢,三是小狗赢。一般来说,针对这种情况,我们需要在”如果...那么...否则“指令中,再嵌套一个”如果...那么....否则“指令,如图:
可以说这是标准的写法,但我们完全可以不用嵌套,只需要借助"停止这个脚本“指令就能轻松的实现。如果两个变量相等,就表示平局,后续就不需要判断了,提前结束脚本,如果不相等,我们再判断是小猫赢还是小狗赢。
第 9 题 问答题
植树节种树
题目说明
背景信息:植物节是保护树木,并组织动员组织群众积极参加以植树造林为活动内容的节日,提倡通过这种活动,激发人们爱林造林的热情、意识到环保的重要性。每年3月12日为植树节。
编程实现:
通过程序把树木种到对应位置
具体要求:
1)点击绿旗,舞台上出现整齐排列的九块土地,右侧出现三种树木的列表。鼠标指针碰到其中一块土地时土地会改变额色,愿标离开时土地恢复成原
来的颜色;
2).在右侧选中一种树木用鼠标拖拽到指定的土地上,松开鼠标即为种下树木;注意:
a. 必须移动土地上,才能种下,否则树消失;
b.种下的树,必须在土地的正中央;
c.已经种下的树不能再拖拽。
3.每快土地上只能种一棵树,如果该块土地已经种树,第二次把树种在这块土地的时候拖拽出来的树会说:"这里已经有树了!"1秒,然后删除拖拽的
4).当9块土地都种满了树,程序结束。
查看答案
答案
编程实现
根据题目描述和思路分析,我们可以分四步来编写程序:
变量和列表初始化设置
克隆土地角色
克隆树木并种树
种满土地结束程序
1.变量和列表初始化
首先创建3个变量,分别命名为”id“、”当前土地“和”种树数量”,如图:
其中,"id"是士地角色的私有变量,添加下划线是为了区分全局变量和私有变量。“种树数量”是用来记录已经种下树木的数量。
接着创建3个列表,封面命名为”土地状态“、”x坐标“和”y坐标”,如图所示:
切换到土地角色,编写代码如下
注意,在Scratch编程中,使用列表时一定要记得清空列表数据。
2.克隆土地角色
这是一个3行3列的规则排列,我们只需要逐行克隆即可,在上面的初始化代码下面,增加代码如下.
这是一个典型的克隆代码,使用的是两层循环,内层循环解决的是如何在一行克隆3个土地,而外层循环解决的则是如何克隆3行。每次克隆之前,将义和V坐标保存到列表中,同时将 d加1,根据克隆体在克隆时和本体特征完全一致的原理,每个克隆体就都有自己的id和坐标值,并存放到列表中了。
生成克隆体之后,需要显示出来,当图标移到克隆体上时,切换到绿色造型,松开时切换到橙色造型,代码如图:
这里还做了一个非常重要的动作,就是"将当前土地设为 id”,如此一来,我们就可以通过变量"当前土地"获知要在哪一块土地上种树了。
3.克隆树木并种树
对于树木角色来说,这里的3个树木角色逻辑完全一样,接下来我们就以“tree1”角色为例进行讲解。当鼠标点击tree1角色时,立刻生成一个克隆体,对应的代码如下:
简要说明两点:
1).这里并没有使用事件指令“当角色被点击”,是为了避免点击克隆体也会生成一个克隆体的情况;
2).在“克隆自己”指令后面增加了一个“等待按下里标不成立“指令,是为了确保在松开凰标之前只有一个克隆体。一旦生成了克隆体,克隆体就需要跟随凰标移动,直到松开凰标为止,如果此时不在士地上,就立刻删除克隆体,否则就需要考虑是否种树,这部分的代码如下:
如果克隆体碰到了土地,此时就需要判断当前土地是否已经种树了,还记得前面的“土地状态“列表和“当前土地“变量吧。将两个指令进行组合就可以获取当前土地的状态了,如果状态为1,表示已经种树了,就提示“这里已经有树了”,然后删除克隆体。否则就将克隆体移到该土地的位置,并将状态值更新为1,同时增加“种树数量”的值。在上面的“否则”指令中,增加代码如下:
4.种满土地结束程序
当9块土地全部种满之后,需要结束程序,在上面的程序中,每成功种下一棵树,变量“种树数量"就增加1,当变量为9时,就说明已经全部种满了。
很多同学会想,这还不简单嘛,直接判断当变量等于9时,停止全部脚本不就行了。你可以试一下,会发现,一旦停止全部脚本,所有的克隆体都消失了,这是Scratch的特点,一旦停止全部脚本,克隆体都会消失。实际上,在上面的代码中,只有两个地方是无限重复执行的,即士地克隆体和tree1角色绿旗代码块中,所以,我们只需要将它们改成条件循环即可。
将土地角色的克隆体代码块修改如下:
同理,在tree1角色中,修改绿旗代码块如下
这样一来,当所有土地都种满数后,代码就都停止下来了,关键是克隆体也不会消失。另外两个树角色的代码和tee1基本一样,只是位置稍有不同,这里就不再列出了
至此,整个作品就创作完成了,一个简单有趣的植树作品就诞生了,^人。
第 10 题 问答题
时光倒流
题目说明
背景信息:
在青蛙王子里的故事里女巫学艺归来,这次她使用了新的魔法施放到王子的身上,不论王子跑到哪里,通过这个资法他都会回到女巫身边。
编程实现:
王子出现在舞台中心,用凰标拖拽王子进行移动,并在移动过程中留下红色痕迹。5秒后,巫师就说“时光倒流!”,然后王子按照刚才的路线自动返
回、
具体要求:
1).点击绿旗,背景、角色位置如下图所示:
2).巫师倒计时5秒钟,使用说话模块程序在舞台上 (由5-1依次说出)
3).倒计时的同时,可以使用围标拖拽王子移动,移动路径由红线呈现在舞台上;
4).5秒后,巫师就说“时光倒流!”,然后王子按照刚才的路线返回到初始位置 (要有移动过程)
查看答案
答案
编程实现
根据题目描述和思路分析,我们可以分三步来编写程序:
女巫倒计时
王子随鼠标移动
王子沿原路返回
1.女巫倒计时
首先创建好变量“倒计时”,将初始值设为5,然后每隔1秒减1,同时要说出当前的倒计时,当倒计时减到0时,说“时光倒流”,然后发送一个广播消息,代码如图所示:
需要说明的是,这里的“说倒计时1秒”指令会持续1秒,所以不再需要使用“等待1秒”指令了。
2.王子随鼠标移动
创建两个列表,分别命名为“x”和“y”,如图所示:
点击绿旗时,先将列表清空,同时设置好画笔颜色和粗细,切换到王子角色,编写代码如下
使用愿标拖拽角色,也就是当角色被点击时,角色跟随蟹标移动直到松开鼠标,移动的过程中,将x和y坐标保存到列表中,对应的代码
如下:
简要说明两点:
1).在拖拽角色的同时绘制内容,需要切换到全屏模式下才有效果;
2).每移动一次,就将当前角色的x和y坐标保存到列表中,保存好的数据如图所示:
3.王子沿原路返回
女巫角色在倒计时结束后发送了一个“返回”的广播消息,王子角色在接收到广播后,开始沿原路返回。我们可以逐个取出列表中的x和y坐标值,将角色移到这些位置即可,不过需要注意的是,得从列表的尾部开始,直到列表的第一项。因此,这里需要创建一个计数器变量,从列表最后一项开始,逐个取出对应列表现的x和y坐标,对应的编写代码如下:
当王子回到初始位置后,使用“全部擦除”指令将画笔绘制的轨迹擦除干净至此,我们的时光倒流作品就创作好了,注意要在全屏模式下进行测试,你可以拖拽出各种各样的路径,看看王子返回的效果,好好感受一下女巫强大的魔法
第 11 题 问答题
春夏秋冬
题目说明
编程实现:
点击绿旗,拨动左上角滑杆对舞台背景切换进行控制,拔动范围:1~4,对应春、夏、秋、冬。同时小猫说出此背景对应季节。
具体要求
1).点击绿旗,舞台呈现春天背景,同时小猫说出此背景对应季节-春(持续显示说话内容》;
2).拨动左上角滑杆,背景和数字发生改变(拨动范围: 1~4,对应1:春、2: 夏、3:秋、4:冬)
3).同时小猫说出此背景对应季节 (持续显示说话内容),
4).点击绿旗,程序重新开始.
查看答案
答案
编程实现
根据题目描述和思路分析,我们可以分两步来编写程序:创建并设置变量
编写小猫角色程序
1.创建并设置变量
首先创建变量“季节”,并将其模式设置为“滑杆”,使用右键单击变量,弹出右键菜单,如图:
单击“改变滑块范围”菜单项,弹出设置滑块范围界面,将最小值设置为1,最大值设置为4,如图所示:
设置完成,点击确定按钮,关闭窗口。
2.编写小猫角色程序
对于小猫角色,需要根据变量的值来切换不同的背景,同时说出对应的季节,我们可以使用重复执行结合条件语句来实现,对应的代码如下:
需要说明的是,对于舞台背景的切换,既可以在舞台青景中实现,也可以在任何一个角色中实现。很显然,对于本题而言,在小猫角色
中切换更为简单。
点击绿旗,运行程序,使用累标拖动滑杆,它会在1、2、3、4四个数字之间变化,舞台背景也相应的进行切换,小猫也不失时机的充当解说员说出当前的季节。
第 12 题 问答题
小猴吃苹果
题目说明
编程实现:
猴子想吃苹果但是苹果树太高了,它只好自己搭建梯子,来吃到苹果。具体要求:
1).当绿旗被点击后,显示Blue Sky背景、猴子和苹果角色 (大小都为50) ,出现在如图位置 (大致位置即可) ;
2).鼠标点击猴子之后,猴子能搭建出如图的梯子 (使用画笔)。图中小正方形边长为50;
3).每按下一次空格键,猴子就可以爬一格梯子,猴子默认已经站在第一格;
4).当猴子爬到上面碰到苹果时,苹果和猴子同时用2秒钟时间慢慢回到地面上,程序结束;
5).重新点击绿旗,程序可以重复执行
查看答案
答案
编程实现
根据题目描述和思路分析,我们可以分四步来编写程序:初始化设置
绘制梯子
猴子爬梯子吃到苹果
作品优化
1.初始化设置
这里的4个角色都需要进行初始化设置,对于Tree1角色,只需要固定好其位置即可,代码如下:
2. 绘制梯子黑标点击猴子,就要开始绘制梯子了,需要注意的是绘制需要移动角色,最好不要直接使用猴子来绘制梯子,而是借助Penci角色来实现,我们可以通过事件广播机制来实现角色之间的通信。
在Monkey角色中,编写代码如下:
相应的,Pencil角色在接收到广播消息后,就开始绘制梯子了,其实就是自下而上绘制6个正方形,切换到Penci角色,编写代码如下:
代码比较简单,画一个正方形需要循环4次,然后再重复6次,就可以绘制好梯子了,但是要注意,一个正方形画好之后,需要向上移动
50步。
3.猴子爬梯子吃到苹果
画好梯子之后,当按下空格键时,猴子向上爬一格,当猴子碰到苹果时,猴子又慢慢回到地面,在Monkey角色中编写代码如下:
到舞台底部,切换到Apple角色,增加如下代码:
注意,猴子和苹果角色滑行的时间相同,这样可以保证两者是同步,但是位置并不相同,在创作时,需要多测试几次,找到合适的坐标值,确保二者的相对位置不变,滑行结束,就停止全部脚本,结束程序。至此,所有的效果都已经实现了,你可以测试一下效果如何。
4.作品优化
上面的代码,基本上是能够满足题目要求的,但是有些不合理的地方,比如反复点击猴子,画笔会一遍又一追地绘制梯子,只不过它们
重叠在一起,看起来不明显。再比如,在没有画好梯子之前,直接按下空格键,猴子也会煞有介事的往上爬,这就有些不合理了,这个该怎么解决优化呢?其实也不难,首先去掉"当角色被点击“指令,使用"碰到凰标指令“和"按下凰标“组合指令来判断是否按下鼠标,同时这里只需要判断-次,最简单的办法是使用”等待条件“指令。
当鼠标点击猴子后,发送"画梯子“广摇消息,不同的是这一次我们使用“广播并等待“指令,在梯子画完之后再继续执行后续代码。接下来纵续判断是否按下空格键,同样的,去掉"当按下空格镜“指令,使用"等待条件“和侦测摄块中的“按下空格键“来判断是否按下空格键,对应的代码如下:
第 13 题 问答题
数苹果
题目说明
编程实现:
数苹果: 苹果树上会随机出现1-10个苹果,小猫询问树上一共有几个苹果,输入数字回答后,小猫可以判断对错。具体要求:
1).运行程序,出现下图所示的角色与背景,
2).按下空格键,苹果树上会随机出现1-10个苹果,小猫会问一共有几个苹果且屏幕下边缘出现询问框;
3).在询问框中输入正确的苹果个数,小猫会说:“正确”1秒,如输入错误的苹果个数,小猫会说:“错误”1秒;
4).之后苹果树上再次随机出现1-10个苹果,小猫会接着询问有几个苹果。
查看答案
答案
编程实现
根据题目描述和思路分析,我们可以分五步来编写程序:
准备工作
克隆苹果
小猫判断数量是否正确
再次出现苹果
代码优化
1.准备工作
使用Scratch自带的背景库和索材库,分别添加好舞台背景和苹果角色,将默认的小猫角色拖到舞台的左下角,切换到小猫角色,编写代码如下:
有了这两行代码,就可以确保每次点击绿旗时,小猫都可以回到正确的位置。
2.克隆苹果
选中苹果角色,绿旗点击的时候,是没有苹果的,因此,需要将苹果角色隐藏起来,编写代码如下.
当按下空格镜时,要随机出现1-10个苹果,这个可以通过克隆来实现,同时需要使用变量保存苹果的数量,对应的代码如下:
克隆完所有的苹果之后,就轮到小猫提问了,因此这里发送了一个广播消息,需要注意,广播只需要发一次就可以了,所以不能在当作为克隆体启动时”指令下下面发送广播消息。
对于苹果克隆体,需要设置好其位置,代码如下:
苹果要出现在树上,也就是舞台左上方,x坐标的范围为-180到0,y的范围为100到150,当然你也可以扩大或缩小范围。注意,这里使用了“将x坐标设为”和“将y坐标设为”两个指令,它和直接使用“移到x,,”指令的效果是一样的。
3.小猫判断数量是否正确
小猫角色在接收到“提问“广播消息后,就开始询问并等待玩家输入数字,然后判断是否正确,切换到小猫角色,编写代码如下:
判断的逐辑非常简单,回答等于苹果个数,则说正确,否则说错误,不管是正确还是错误,会重新随机出现1-10个苹果,因此这里发送了一个“再来一次”的广播消息。
4.再次出现苹果
苹果角色在接收“再来一次"广播消息之后,需要做两件事情,一是删除原来的苹果克隆体,二是重新生成克隆体,我们可以编写如下代
码
由于“删除此克隆体“指令是一个尾指令(所谓尾指令是指它只能作为最后一个指令,后面不能再接任何其他指令了》,所以,这里使用了两个独立的代码块,其中上面的代码块用于删除所有的苹果克隆体,下面的代码块则用于重新生成新的克隆体。这两个代码块都是在接收到“再来一次”广播消息时就立刻执行的,那到底是谁先执行,谁后执行呢?如果上面的删除此克隆体后执行,那岂不是把新生成的克隆体也一井都删除了么。为确保我们先执行删除指令,然后再删除,因此在下面的代码块中,添加了一个等待0.5秒的指令,这个小技巧你可要学会哦 。
5.代码优化我们再回头看一下苹果角色的代码,其中有两个代码段,一个是按下空格键代码块,一个是当接收到“再来一次“广摇消息代码块,如图所示:
有什么问题吗? 相信聪明的你已经发现了,这两个代码块中的核心代码,也就是随机生成1~10个苹果克隆体的代码是一模一样的,针对这种情形,我们有什么办法可以让代码变得更简洁吗?技巧有两个,第一个技巧就是使用自制积木,第二个技巧则是使用事件广播机制。我们先来看第一个技巧,使用自制积木,我们可以将随机生成1~10个苹果克隆体的代码做出自制积木,如图所示: