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

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

第13届蓝桥杯青少年组第2次选拔赛于2021年10月23日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

病毒消灭战,本题是2021年10月23日举行的第13届蓝桥杯Scratch选拔赛真题编程第4题,初级组和中级组都有此题,题目要求编程实现键盘按键控制吞噬细胞去消灭人体中随机出现的病毒。

先来看看题目的要求吧。

一.题目说明

背景信息:

机体内具有吞噬功能的细胞统称为吞噬细胞,吞噬细胞对体内衰老死亡细胞和外来异物有吞噬和消化的功能,是机体天然防御的重要机制之一。

编程实现:

用键盘按键控制吞噬细胞去消灭人体中随机出现的病毒。

具体要求:

1). 运行程序,吞噬细胞(白色吞噬细胞为防御状态)在舞台左侧边缘随机位置出现,三种病毒(蓝色、紫色、绿色)在舞台右侧边缘随机位置出现,并且以不同速度水平向左移动(如图所示);

2). 按上、下、左、右按键,控制防御的吞噬细胞上、下、左、右移动;

3). 按空格键,吞噬细胞进行挥剑,松开空格按键,吞噬细胞开始防御;

4). 病毒在移动的过程中碰到挥剑的吞噬细胞时,病毒消失且“消灭”值+1;

5). 当病毒移到舞台最左边时,病毒消失并且“感染”值+1;

6). 当“消灭”值大于等于 10 时,所有病毒消失,吞噬细胞说:“我胜利了!”;

7). 当“感染”值大于等于5时,所有病毒消失,吞噬细胞说:“我还要努力!”。

评分标准:

  • 5分:满足要求1);

  • 3分:满足要求2);

  • 3分:满足要求3);

  • 4分:满足要求4);

  • 5分:满足要求5);

  • 5分:满足要求6);

  • 5分:满足要求7)。

二.思路分析

本题包含4个角色,分别是吞噬细胞、蓝色病毒、绿色病毒和紫色病毒,如图所示:

其中,3个病毒角色的效果是一样的,都是从舞台右边缘随机位置出现,然后向左移动,直到舞台左边缘消失,如果碰到挥剑的吞噬细胞则消失。而吞噬细胞角色则在玩家按方向键时上下左右移动,在按下空格键时挥剑防御。

代码实现并不复杂,超平老师想说的是,如何提升编写程序的效率和质量。在Scratch中,按职责划分,可以把每个角色的代码分成两部分,一是角色自己的代码,二是和其它角色交互的代码。

在编写程序的时候,我们可以先实现每个角色自己独立的功能,进而再考虑和其它角色之间的交互。这样可以极大地降低编程的难度,同时会减少很多不必要的错误。

三.编程实现

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

  • 吞噬细胞移动和防御

  • 病毒角色向左移动

  • 吞噬细胞消灭病毒

  • 胜利和失败

1. 吞噬细胞移动和防御

绿旗点击时,吞噬细胞在舞台左边缘随机位置出现,并呈现防御造型,当玩家按方向键时,细胞分别向上下左右运动,按下空格键开始挥剑防御,在细胞角色中编写代码如下:

2. 病毒角色向左移动

绿旗点击时,病毒角色在舞台右侧边缘随机位置出现,然后以某个随机速度向左移动直到舞台左边缘消失,同时感染值加1。

这里需要添加两个变量,其一是“速度”,用来表示病毒向左移动的速度,其二是“感染”,表示感染值。其中“速度”需要做成私有变量,因为这里有3个病毒角色,它们都有各自的速度。

以蓝色病毒角色为例,编写代码如下:

需要注意两点:

1). 判断病毒角色是否到达舞台左边缘,此处使用的是“x坐标<-240”,而不是“碰到舞台边缘”,原因在于Scratch舞台有4个边缘,角色刚开始就出现在舞台右边缘,如果使用后者,病毒角色就永远停留在舞台右边缘;

2). 这里的“感染”变量还没有进行初始化设置,稍后会在细胞角色中设置。

3. 吞噬细胞消灭病毒

细胞角色和病毒角色各自独立的效果已经实现了,接下来就要考虑两个角色之间的交互了,即吞噬细胞挥剑防御时碰到病毒,病毒就被消灭了。

代码是写在细胞角色中呢,还是病毒角色中呢?这里有一个原则,就是谁的状态发生了变化,就写在哪个角色中。很明显,碰撞后的结果是病毒被消灭,也就是说病毒角色的状态发生了变化,因此代码要写在病毒角色中。

在病毒角色的重复执行中,增加如下代码:

病毒消失需要同时满足两个条件,一是碰到细胞角色,二是细胞角色刚好是挥剑防御造型,二者是逻辑与的关系。

这里的“消灭”变量用来表示病毒被消灭的数量,它也需要初始化,稍后会在细胞角色中进行设置。

4. 胜利和失败

最后就是游戏胜利和失败机制了,当“消灭”值大于等于 10 时,所有病毒消失,吞噬细胞说:“我胜利了!”,在细胞角色中编写代码如下:

而当“感染”值大于等于5时,所有病毒消失,吞噬细胞说:“我还要努力!”,继续在细胞角色中添加代码如下:

不管是胜利还是失败,在这里都发送了一个“病毒消失”的广播消息,其目的是让病毒角色停止移动。相应的在3个病毒角色中都需要增加如下代码:

在上面的代码中,我们使用了“等待条件”指令,针对这种只需要判断一次的场景,这是最简洁高效的实现方式。

四.总结与思考

本题难度系数为4,积木块数量在70个左右,涉及到的知识点主要包括:

  • 角设置角色位置,包括指定范围的随机位置;

  • 按键处理,包括上下左右方向键和空格键;

  • Scratch运动编程,注意边界条件的判断;

  • 变量的使用,包括全局变量和私有变量;

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

  • 事件广播机制;

  • “等待条件”指令的灵活运用;

在细胞角色中,对于按键的判断,我这里使用的是侦测指令“按下xx键”,很多同学喜欢使用事件指令“当按下xx键”,从实现效果上来讲,二者没什么区别,那这两种方式究竟有什么区别呢,你知道吗,欢迎和我讨论与交流^_^。

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

有需要素材和源码的,可以联系本人。

病毒消灭战-第13届蓝桥杯Scratch选拔赛真题精选相关推荐

  1. 闰年计算-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第76讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  2. 红绿灯记忆游戏-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第77讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  3. 嫦娥奔月-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第75讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  4. 潜艇游戏-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第71讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  5. 豌豆射手-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第72讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  6. 拼图游戏-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第73讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  7. 绘制花朵-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第78讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  8. 第13届蓝桥杯Scratch选拔赛真题集锦

    第13届蓝桥杯Scratch选拔赛真题集锦 编程题 第 1 题问答题 跳舞机游戏 题目说明 编程实现 跳舞机游戏. 具体要求: 1).点击绿旗,舞台左上角显示得分0代表玩家分数,在得分右侧倒计时10代 ...

  9. 植树节种树-第12届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第87讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

最新文章

  1. 力扣(LeetCode)刷题,简单+中等题(第31期)
  2. C++拾趣——使用多态减少泛型带来的代码膨胀
  3. 如何实现良好的隔空操作体验
  4. 【原创】cs+html+js+css模式(五):页面调用JS的编写
  5. PySide教程:一个简单的点击“.NET研究”按钮示例
  6. UIView翻译 (参考)
  7. C#中Cache的使用
  8. 为什么要选择学Web前端?无法反驳的4大理由
  9. 系统蓝屏的几种姿势,确定不了解下么?
  10. 计算机网络之数据链路层:19、总结
  11. python内置函数每个执行一次
  12. java小球反弹_java实现小球碰撞反弹(示例代码)
  13. 畅捷通T+ RAP(Rapid Application Platform)快速应用开发平台
  14. gta5oracle.yft原文件,GTA5 addonpeds2.2[添加人物模型的人物模型选择器]
  15. reactos操作系统实现 2
  16. 网站建设好但是访问不了的原因及解决方法
  17. Ubuntu 20.04折腾markdown编辑器remarkable血泪史
  18. 【PWA】响应式开发
  19. Python 3 显示图像的方法
  20. ethers.js Metamask和CoinbaseWallet,TronLink钱包连接方式

热门文章

  1. 海康网络摄像头忘记密码_不要忘记网络性能
  2. 【UE4】射线检测获取屏幕中心位置与制作瞄准准星
  3. 《爆款文案》的读后感作文3000字
  4. 记一次钓鱼网站的代码审计
  5. 如何解决NTLDR is missing
  6. 改变PowerPoint2003中超链接的颜色
  7. SMBIOS 学习内容
  8. 正则表达式快速入门(三)
  9. 答读者问(29):三个在校学生有关在校学习、考研、编程语言、未来工作的疑问及答复
  10. Android app下载并安装