吃豆人游戏-第12届蓝桥杯Scratch选拔赛真题精选
创始人
2024-01-30 20:35:25

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第79讲。

蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。

第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个角色,如图所示:

这11个角色可以分为四类:

  • 吃豆人

  • 幽灵,有4个,分别是幽灵1、幽灵2、幽灵3和幽灵4

  • 水果,有4个,分别是apple、banana、strawberry和watermelon

  • 提示信息,有两个,分别是游戏结束和任务失败

其中,提示信息角色的功能最为简单,当游戏成功或失败时,显示对应的信息即可。

其次是水果角色,它们在整个游戏过程中都是不动的,其位置是随机的,但是要限定在各自所在的格子内,如果碰到吃豆人,就隐藏起来。

接下来是吃豆人角色,当玩家按下方向键时,它分别向上下左右4个方向运动,重点是不能穿过白色墙壁,一个比较简单的实现方式就是检测角色是否碰到白色,如果碰到,就退回来。

最后是幽灵角色,它们在各自的格子内随机移动,重点是设置好每个幽灵的位置,并尽量让幽灵的运动更自然一点,如果碰到吃豆人,则游戏失败。

但是我们编程实现的时候是需要按照游戏的逻辑来逐步完成,首先是放置好水果角色,其次是通过方向键控制吃豆人移动,接下来是幽灵在各自的格子内来回移动,最后是判断游戏的成功和失败。

三.编程实现

根据题目描述和思路分析,我们可以分5步来编写程序:

  • 水果角色

  • 吃豆人移动

  • 幽灵来回移动

  • 游戏成功

  • 游戏失败

1. 水果角色

水果角色在整个游戏过程中,都是静止不动的,我们首先设置好它们的位置,代码如下:

设置好的位置分别如下:

注意,水果角色被吃豆人吃掉的功能稍后会在第4步中完成。

2. 吃豆人移动

游戏开始时,吃豆人位于舞台中心位置,当按下↑、↓、←、→四个方向键时,分别向上下左右移动,如果碰到白色,则退回移动的步数即可,对应的在吃豆人角色中编写代码如下:

代码虽然挺长,但大部分代码基本上是相同的,需要注意两点:

1). 每个按键事件中,都需要进行是否碰到白色的检测,有的同学想精简代码,将颜色碰撞检测拎出来,放在最后面,想法是好的,但会出现角色穿越白墙的小bug;

2). 碰到白墙后,吃豆人移动了-5步,移动负数步意味着角色会朝着角色当前方向的反方向移动,注意两个数字要一致,并且不能太大,避免直接越过白墙。

3. 幽灵来回移动

幽灵角色在各自的格子内随机移动,很多同学首先会想到”在1秒滑行到随机位置“指令,这确实可以实现随机移动的效果,但是看起来不是很自然,我们可以换一种更好的方法。

将幽灵设置一个随机方向,然后以某个速度移动,当角色要超出自己的边界时退回来,同时左转或右转一定的度数,以幽灵1角色为例,编写代码如下:

这里的关键点是角色边界的判断,水平方向和垂直方向上都需要判断两次,一共要判断4次,它们之间是逻辑或的关系。

其它三个幽灵角色的代码也基本一样,这里就不再列出了。

4. 游戏成功

如果吃豆人吃掉所有的水果,则游戏成功,所以对于每个水果角色,我们都需要判断一下是否碰到吃豆人,如果碰到,水果角色消失,同时需要记录一下被吃掉的水果数量,如果数量为4,就发送一个成功的广播消息。

在水果角色中,增加代码如下:

在判断是否碰到吃豆人时,这里使用了”等待条件“指令,我们已经多次用到这个编程小技巧了,对于只需要判断一次的情况,使用等待条件指令是最简洁的。

其它3个水果角色都需要添加这段代码,注意”将吃掉水果数设为0“指令只需要设置一次即可。

游戏成功,需要显示游戏结束效果,切换到结束角色,编写代码如下:

还需要注意,如果游戏成功了,要立刻停止幽灵角色的移动并消失,所以4个幽灵角色在接收到”成功“的广播消息时,要停止正在运行的代码块,以幽灵1角色为例,添加代码如下:

其它3个幽灵角色都需要添加这段代码。

5. 游戏失败

如果吃豆人碰到幽灵,则游戏失败,我们可以直接在幽灵角色中进行侦测,以幽灵1角色为例,编写代码如下:

在等待指令前面添加了一个”等待0.1秒“指令,是为了避免上次游戏失败时吃豆人和幽灵在一起的情形,其余3个幽灵角色也需要添加相同的代码。

失败角色在接收到”失败“的广播消息后,显示即可,切换到失败角色,编写代码如下:

至此,整个作品就创作完成了,你可以测试一下自己的反应速度了,^_^。

四.总结与思考

本题难度中等,积木块数量88(去掉重复代码后),涉及到的知识点主要包括:

  • 按键事件编程,按方向键控制角色移动;

  • 控制角色在指定范围内运动;

  • 事件广播机制;

  • 等待条件指令的妙用;

  • 运算符指令,包括随机数、比较运算和逻辑或运算;

  • 负数在运动中的妙用和意义。

本题以经典游戏吃豆人为背景,具有较强的趣味性,重点是如何精确控制角色在指定范围内运动,同时还要有精益求精的态度,不仅要实现功能,还要提供良好的用户体验。

如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。

有需要素材和源码的,可以联系本人,或者移步至同名wx号。

上一篇:redis哨兵系列1

下一篇:Spring6整合JUnit5

相关内容

热门资讯

长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
1秒多少毫秒 1秒等于多少毫秒... 长度单位换算1丈=10尺;1尺=10寸;1寸=10分;1分=10厘;1丈≈3.33米;1尺≈3.33...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
中国电信人工电话多少 中国电信... 当我们在使用中国移动、中国电信和中国联通提供的电信业务时,可能会发生争议。建议直接向服务提供商投诉,...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...