吃豆人游戏-第12届蓝桥杯Scratch选拔赛真题精选
第12届蓝桥杯青少年组第6次选拔赛于2021年3月27日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
吃豆人游戏,本题是2021年3月27日举行的第12届蓝桥杯Scratch选拔赛真题编程第5题,初级组和中级组都有此题,题目要求编程创作一个简单的吃豆人游戏,玩家通过方向键控制吃豆人吃到水果,当水果全部被吃掉后游戏结束。
先来看看题目的要求吧。

题目说明

1).点击绿旗,舞台上出现要求的角色与背景;每个格子内有一个水果和一个幽灵,水果不动,幽灵在各自的格子内随机移动;
2). 通过上下左右四个方向键,可以控制吃豆人的上下左右移动,吃豆人不可以穿越白色墙壁;
3). 吃豆人碰到水果,水果消失;
4). 吃豆人如果碰到幽灵角色,任务失败程序停止;
5). 吃豆人吃完4个水果,4个幽灵消失,1秒后游戏结束。

思路分析

本题一共有11个角色,如图所示:
吃豆人 幽灵,有4个,分别是幽灵1、幽灵2、幽灵3和幽灵4 水果,有4个,分别是apple、banana、strawberry和watermelon 提示信息,有两个,分别是游戏结束和任务失败

程序实现

根据题目描述和思路分析,我们可以分5步来编写程序:
水果角色
吃豆人移动 幽灵来回移动 游戏成功 游戏失败
1. 水果角色
水果角色在整个游戏过程中,都是静止不动的,我们首先设置好它们的位置,代码如下:
设置好的位置分别如下:
注意,水果角色被吃豆人吃掉的功能稍后会在第4步中完成。
2. 吃豆人移动
游戏开始时,吃豆人位于舞台中心位置,当按下↑、↓、←、→四个方向键时,分别向上下左右移动,如果碰到白色,则退回移动的步数即可,对应的在吃豆人角色中编写代码如下:
代码虽然挺长,但大部分代码基本上是相同的,需要注意两点:
1). 每个按键事件中,都需要进行是否碰到白色的检测,有的同学想精简代码,将颜色碰撞检测拎出来,放在最后面,想法是好的,但会出现角色穿越白墙的小bug;
2). 碰到白墙后,吃豆人移动了-5步,移动负数步意味着角色会朝着角色当前方向的反方向移动,注意两个数字要一致,并且不能太大,避免直接越过白墙。
3. 幽灵来回移动
幽灵角色在各自的格子内随机移动,很多同学首先会想到”在1秒滑行到随机位置“指令,这确实可以实现随机移动的效果,但是看起来不是很自然,我们可以换一种更好的方法。
将幽灵设置一个随机方向,然后以某个速度移动,当角色要超出自己的边界时退回来,同时左转或右转一定的度数,以幽灵1角色为例,编写代码如下:
这里的关键点是角色边界的判断,水平方向和垂直方向上都需要判断两次,一共要判断4次,它们之间是逻辑或的关系。
其它三个幽灵角色的代码也基本一样,这里就不再列出了。
4. 游戏成功
如果吃豆人吃掉所有的水果,则游戏成功,所以对于每个水果角色,我们都需要判断一下是否碰到吃豆人,如果碰到,水果角色消失,同时需要记录一下被吃掉的水果数量,如果数量为4,就发送一个成功的广播消息。
在水果角色中,增加代码如下:
其它3个幽灵角色都需要添加这段代码。
5. 游戏失败
如果吃豆人碰到幽灵,则游戏失败,我们可以直接在幽灵角色中进行侦测,以幽灵1角色为例,编写代码如下:
在等待指令前面添加了一个”等待0.1秒“指令,是为了避免上次游戏失败时吃豆人和幽灵在一起的情形,其余3个幽灵角色也需要添加相同的代码。
失败角色在接收到”失败“的广播消息后,显示即可,切换到失败角色,编写代码如下:
至此,整个作品就创作完成了,你可以测试一下自己的反应速度了,^_^。

总结与思考

按键事件编程,按方向键控制角色移动;
控制角色在指定范围内运动;
事件广播机制;
等待条件指令的妙用;
运算符指令,包括随机数、比较运算和逻辑或运算;
负数在运动中的妙用和意义。
本题以经典游戏吃豆人为背景,具有较强的趣味性,重点是如何精确控制角色在指定范围内运动,同时还要有精益求精的态度,不仅要实现功能,还要提供良好的用户体验。

添加 家长论坛微信
全部 0条评论