第10届蓝桥杯Scratch省赛真题集锦

news2024/10/5 12:44:46

编程题
第 1 题 问答题
击鼓游戏
题目说明
准备工作:
将复台背景设置为“spotight-stage”,添加一个“Belerina"角色、两个“Drum1"角色和两个“Drum2”角色,并按照图 7-1 的位置摆放。角色“Beleina"的造型和颜色的设置须如图 7-1所示,五个造型的裙子颜色顺序为:白、红、蓝、绿、黄;四个鼓的额色分别设置为:红、蓝、绿、黄。

编程实现:
复台中央的小女孩会随机变换造型及衣服颜色4次,游戏玩家要记住衣服颜色出现顺序,并按顺序敲击相应额色的鼓,颜色顺序正确则可得1分,并开
始下一轮变换颜色,直到某一轮敲鼓顺序错误则游戏结束,更新最高得分。

具体要求:
1、每次点击绿旗后,舞台左上角的“得分”(显示位置见图-2) 都为 0;2、小女孩为造型 1 (白色裙子) ,并说“请观察颜色序列!”2 秒钟 (图-2) ;
3、小女孩切换 4 次造型,每次都是随机切换为造型 2 到造型 5 中的一个(这 4次切换的造型之间允许重复);而且第一次切换后要说"1“1 秒钟,第次说“2”1 秒钟,第三次说“3”1 秒钟,第四次说“4”1 秒钟 (图-3 至图-6) ;
4、在4 次造型切换完成后,小女孩切换回造型 1(白色裙子)》,表示一轮切换结束。小女孩说:“请按顺序点击相应额色鼓!”(图-7);5、游戏玩家根据刚刚小女孩 4 次切换造型中衣服颜色的顺序,依次点击(敲击)相应颜色的鼓,在敲击的第一次鼓后小女孩说“1”,第二次后说“2”,第二次后说3”,第四次后说“4”,如果玩家敲击的顺序与衣服颜色切换的顺序相一致,小女孩就说"正确!"2 秒钟,且得分加 1(图-8),并从步夏 2开始下一轮游戏;如果敲击的顺序错误,小女孩就说:“游戏结束”,并根据当前得分的情况更新复台右上角的最高得分(显示位置如图·-9 所示),程序结束。
将程序保存到桌面,命名为“7.sb2”
 

查看答案

答案

编程实现

根据题目描述,我们可以分3步来编写程序:

女孩随机切换造型

击鼓并记录顺序

判断游戏是否成功

1.女孩随机切换造型

首先创建两个列表,命名为"额色顺序”和"敲鼓顺序”,再创建一个变量"次数”,用来表示女孩切换造型的次数,后面还可以用来表示击鼓的次数,游戏开始时,将列表清空,并将次数设置为1

接下来,将女孩切换为白色造型,说“请观察颜色序列",然后重复4次随机切换造型,并将每次造型的名称保存到列表中,每切换一次造型,女孩都说出当前的次数。

造型切换完毕,女孩又切回到白色造型,并说“请按顺序点击相应额色鼓!”,同时将次数清零。对应的代码如下所示:

需要注意的是,女孩一共有5个造型,但我们只需要在红蓝绿黄四种颜色之间切换,所以这里使用了“在2和5之间取随机数“指令。保存到列表中的是女孩造型的名称,也就是红、蓝、绿、黄。

2.击鼓并记录顺序

接下来玩家要开始击鼓了,击鼓的时候需要完成两件事情,一是将当前鼓的颜色保存到列衷“敲鼓顺序”中,二是女孩说出当前击鼓的次

数。

4个鼓角色的功能基本一样,这里以最左边的红色鼓为例,编写代码如下:

需要说明的是,这里再次用到了变量“次数”,这就是为什么要在女孩切换完造型之后将变量清零的原因。每次敲完鼓之后,女孩都要说出当前敲击的次数,所以这里发送了一个“敲鼓”的广播消息。其它3个鼓角色的代码基本一样,唯一不同的是向列表中加入的颜色,分别是蓝、绿、黄。当女孩角色接收到“敲鼓”的广播消息后,说出次数即可,代码如下所示: 

 

3.判断游戏是否成功当玩家击鼓4次之后,就要判断游戏是否成功了,我们可以在女孩说出次数之后进行判断,如果次数=4,说明已经敲完鼓了判断的依据前面已经说过了,直接判断两个列表是否相等即可,如果相等,将得分加1,并说正确,然后开始下一轮游戏。如果错误,则根据情况设置最高分,并说错误,然后停止全部脚本,这部分的代码如下所示: 

在上面的代码中,使用了两个变量,一个是“得分”,一个是“最高得分”,在游戏开始时,需要将得分设置为0,而最高得分则不能设置

初始值的。

重新开始游戏,这里做了一个巧妙的处理,就是直接发送了一个"开始"的广播消息,同时将原来绿旗下面的代码一分为二,如图所示:

注意,这里并没有增加新的代码,只是将绿旗代码一分为二,通过广播机制将二者串联起来,这样就可以在游戏成功之后,再次发送“开始”广播,从而实现多轮游戏了,这是一个非常巧妙而又重要的编程技巧,希望你能够好好体会。

第 2 题 问答题

列表排序

题目说明

绵程实现:

老师给小猫出了一道题: 在列表 1 中生成 5 个在 1~99 范围内的随机整数,然后按照从大到小的顺序将它们依次移到列表 2 中。

例如:在列表 1 中随机生成的整数依次是“12,3,1,13,17”,在处理之后列表 2 中的整数依次是“17,13,12,3,1”。

 

 

具体要求:1、每次点击绿旗后,在屏幕中都显示如图-1 所示的列表 1 和列表 2,且在列表 1 中随机生成 5 个在 1-99范围内的随机整数,而列表 2 中内容为

空。然后小猫说“5 秒钟后开始处理”,并等待 5 秒钟;2、处理数据时,每间隔 1 秒钟,都将列表 1 中当前最大的一个数字移动到列表 2 中,注意: 是移动,不是复制;3、当处理到列表 1 为空后,列表 2 中的数据应从大到小排列,如图-2 所示,然后小猫说“处理完啦。”2秒钟,然后程序结束。将程序保存到桌面,命名为“6.sb2”。

 

2.依次将数据移到列表2中

根据前面的思路分析,我们先创建两个变量,分别命名为”max“和”i“,如图:

 

其中,max表示最大数字。i是循环计数器,通过可以取出列表中的每一个数字。我们先来完成一轮比较及移动操作,根据流程图,统

写代码

 

将最大数字加入到列表2中比较简单,值得注意的是如何从列表1中删除最大数。此处使用了组合指令,其中一个指令是”列表中的第个xx的编号”,通过该指令,我们就可以找到最大数对应的编号,有了编号,则除列表项就非常简单了,只需要使用指令"出除列表的第x项“即可。

还有一点需要说明,由于max是列表的第1项,所以我们是从第2项开始比较,所以的初始值设为了2,总的比较次数也减少一次,即”列表1的项目数 - 1“次。

列表一共有5个数字,所以,我们需要把这个比较重复5次,每次间隔1秒,排序完毕,说一句“处理完啦!“,代码如下:

 

第 3 题 问答题

自动驾驶

题目说明

编程实现:

将舞台背景改为“blue-sky”背景,在舞台上设置 1 个小车“Car-Bug”角色,并保留默认的小猫角色。小车从舞台左侧向右行驶。当小车快要碰到小猫时,小车能自动停止移动,而小猫被吓到了

具体要求:

1、每次点击绿旗后,舞台背景和小车角色的初始位置都要如下图所示,小猫角色的 坐标值为从 100 到200 范围内的一个随机数值,y 坐标参考图中位置来大致设置;

2、小车开始自动向右行驶。小猫的位置则始终保持不动;

3、小车在行驶到车头距离小猫一个车身范围以内时,小车能自动停止,视觉观察时,小车不能碰到小猫,两者之间留有一段距离。如下图所示:

 

4、在小车停下后,小猫说“哇!!!”2 秒钟,程序结束。将程序保存到桌面,命名为“5.sb2” 

 

由于舞台较小,这里将小猫的大小设置为75,这个不是必须的,你可以设置任意大小。

2.小汽车行驶并自动停车

小汽车从舞台左边开始向右移动,需要先设置好初始位置,然后重复执行右移,很明显,此处使用直到循环最为简单,代码如下:

 

简单说明一下,这里将小车设置为50,此时一个车身的距离大概是120步,你可以根据实际情况来确定这个距离。当小车自动停止后给小猫角色发送了一个”停车“的广播消息。

3.小猫说唯

小猫在接收到”停车“广播消息后,说了一声哇,切换到小猫角色,编写代码如下:

 

至此,整个代码就编写完毕,你可以反复执行程序,测试一下自动驾驶功能,是不是还挺智能的. 

 

第 4 题 问答题

折扇

题目说明

编程实现:

以坐标(0,0)点为中心绘制一把扇子: 扇面和扇把都是三分之一圆,扇面的半径为 100 左右,扇把的半径为 20 左右。

具体要求:

1、每次点击绿旗后,舞台背景为白色,舞台上不显示任何内容。然后连贯地画出扇子图案,中间不可停顿;

2、画出的扇子颜色为黑色,画笔粗细为 1,扇面和扇把的张角都为三分之一圆(120 度),扇面的半径为 100 左右,扇把的半径为 20 左右:

3、坐标 (0,0) 点是构成扇子的这些线段的相交点。

将程序保存到桌面,命名为“4.sb2”。

 

2.绘制折扇

首先要确定好旋转点和绘制第一条直线的方法,如图:

 

从图中可以看出,旋转点处于舞台下方,y坐标大概为-100,X坐标直接设置为0即可。而绘制第一条线的方向是左上方,整个扇面为120度,根据对称原理,左右各占60度,所以初始方向可以设置为-60。然后就是要确定扇面和扇把的长度了,这里我将扇面长度设置为200步,扇把长度设置为30步,接下来就可以开始绘制了,具体过程也比较简单,就是让小猫沿着-60度方向移动200步,然后反向移动230步,这样第一条直线就绘制完成了,接着继续移动30步,这样小猫就回到旋转点了,此时需要右转1度,重复此过程120次即可,具体的代码如下: 

需要说明一点,就是这里的落笔和抬笔,为了确保不重复画线,在此处我只让反向移到230步的时候才落笔。在实际编程的时候,重复

绘制问题也是可以的。

第 5 题 问答题

计算游泳时间

题目说明

编程实现

你要参加运动会,每天都刻苦练习游泳,并给自己的游泳时间做了精确的计时(本题中的计时都按 24 小时制计算)。你只要说出自己从 a 时b 分直游泳到当天的 c 时d 分,你的小鱼教练就能计算出你这天一共游了多少时间。你的小鱼教练是怎么算出来的呢?具体要求:

1、程序开始运行时,小鱼教练询问游泳开始时间(分别询问 24 小时制的时和分)和结束时间(分别询问24 小时制的时和分)。

2、小鱼教练计算并说出游了多长时间。但如果你输入的结束时间早于开始时间,小鱼教练就会说“输入错误!结束时间早于开始时间”,程序结束.

将程序保存到桌面,命名为“3.sb2”。

 

 

2.计算游泳时间

接下来就需要换算时间,统一单位,这是本题的核心算法。为了方便,可以创建一个变量"总分钟数“,用于保存开始时间和结束时间相差的总分钟数,代码也比较简单,就是将小时乘以60,再加上分钟数,然后相减,代码如下:

 

对于计算得到的总分钟数,可能会出现两种情况,一是小于0,这说明你输入的结束时间早于开始时间,小鱼教练要给出输入错误的提示;二是大于0,此时则需要将总分钟数再转换成小时和分钟,然后组成一句完整的话,反馈给玩家,这部分的代码如下: 

 

为了方便,这里创建了两个变量,分别是“小时“和“分钟“,如果总分钟数 >0,就说出小时和分钟,不过需要使用连接运算符,连接成句完整的话。

将总分钟数转换成小时和分钟,这里用到了数学中的余数知识,整数部分就是小时数,而小数部分则是分钟数。

将上面的3段代码连在一起,程序就可以正常工作了。

 

第 6 题 问答题

小猫打螃蟹

题目说明

准备工作

背景改为白色背景,保留小猫角色,导入角色库中角色螃蟹“Crab”;自行绘制子弹角色,颜色和大小可自行设定

编程实现:只在舞台左下角的小猫,发射子弹射击一只在舞台顶部的水平移动的螃蟹,击中螃蟹 5 次后程序结束!

具体要求:

1、程序运行后,小猫一直固定在舞台左下角,螃鳖在舞台上部进行最左->最右->最左的循环移动。注意:移动速度不要太快2、按下空格键,小猫发射一颗子弹,子弹须沿着里标方向发射出去,碰到螃望或者舞台边缘后消失。3、子弹击中螃蟹 5 次后,小猫说:“我赢啦”2 秒钟,游戏结束。要求击中的次数在舞台的左上角实时显示将程序保存到桌面,命名为“2.sb2”

 

这里使用了“将旋转方式设为左右翻转指令",目的是避免螃蟹在反弹的时候出现头下脚上的效果。至于螃鳖移动的速度,我将它设置为6,不快不慢,你可以修改成其它的值,速度越快,游戏难度就越大。

2.发射子弹

在子弹角色中,需要判断子弹是否碰到螃鳌并记录其次数,因此,我们可以先创建好变量“次数,”,并设置其初始值,代码如下·

当按下空格键时,开始发射子弹,这是典型的运动编程,根据运动编程4要索模型,我们需要确定好角色的起点、方向、速度和终点。子弹角色的起点是小猫所处位置,方向则是沿着累标方向,速度就是移动的步数,而终点,这里有两个,一个是舞台边缘,另一个则是螃蟹所在位置。在这种情况下,建议先不考虑碰到螃蟹的情况,也就是只考虑子弹自己的运动,对应的代码如下: 

 

接下来再考虑碰到螃蟹的情况,是否碰到螃蟹是在子弹运动过程中,所以可以直接在循环中进行判断,增加代码如下: 

之所以分两步来编写代码,是为了让你更好地理解编写代码背后的逻辑和思路。

3.小猫判断游戏获胜

小猫角色在舞台下方静止不动,只需要设置好其坐标即可,然后需要判断次数是否等于5,通常的方法是使用“重复执行“+"如果...那么"指令。其实,还有一种更为简单的方法,就是使用“等待条件”指令,对应的代码如下:

 

需要说明两点:

1.这里之所以添加了一个“等待0.1秒”指令,是避免再次点击绿旗时,直接说“我赢啦”,

2.“等待条件”指令只适合于一次性判断,如果是多次判断,则需要结合循环指令了。

 

第7题问答题

女孩顶球

题目说明

准备工作:

导入角色库中的两个角色小女孩“Anna”和足球“Ball-Soccer"

编程实现:

小女孩正在表演用头托住足球。为了把足球一直托在头顶,小女孩需要不停地晃动双手。小女孩还可以跟着望标一起移动。

具体要求:

1、程序运行后,小女孩要跟随鼠标一起移动;

2、小女孩可以不停地切换造型 (切换造型的间隔时间参考值为 0.2 秒) ,

3、无论小女孩是否移动,足球都始终处于小女孩的头顶。不用考虑足球是否追挡住小女孩的头部,只要靠着就可以,参考下图所示。

 

 在移动的同时,女孩不停的切换造型,这可以使用“下一个造型“指令,很多同学毫不犹豫的写出如下代码:

 

执行这段代码,会发现女孩切换造型的速度太快,于是又增加了一个“等待1秒“指令,如下: 

 再次执行代码,又出现一个奇怪的现象,女孩的反应有些迟钝,这是什么情况?仔细想想,也不难理解,当增加了“等待0.2秒“指令后,女孩每一次移到黑标指针位置后,需要等待0.2秒,才会再次移到凰标指针位置,这就造成了卡顿现象。解决方法也比较简单,就是使用两个绿旗代码块,将移动和切换造型的代码分开同步运行,互不干扰,这就是编程中的多线程,代码如下:

实际上,在Scratch中经常采用多线程的编程实现,在一个角色中编写多个绿旗代码块.

2.足球位于女孩头顶

对于足球角色来说,每次移到女孩角色位置即可,可编写代码如下:

 

执行代码,结果如下:

 

足球位于女孩的腰部,你知道这是为什么吗? 原因很简单,就是将足球移动女孩角色位置,其实是将足球角色的造型中心和女孩的造型

中心重叠起来,而女孩的造型中心刚好是在腰部。要将足球放到女孩头顶,可以将足球在当前位置向上移动一定距离(大概100步)即可,因此,我们可以在每次移到女孩所在位置的同时,将y坐标增加100,代码如下:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575662.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美女放电还是整形-从《人月神话》误译谈状态机图

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 在重审《人月神话》中译本的过程中,发现一处较严重的误译。 原文是: the first milepost is not reached until two months have elapsed. 原译为: 两个月…

Java中常量基础知识

1 问题 什么是字面常量? 2 方法 拿第一行输出语句来说,这行代码输出了 “hello” 这个字符串,无论何时何地运行程序,输出的这个字符串都不会变,这就是字面常量。 定义:常量即程序运行期间,固定不…

chatgpt网站优选集合

目录 chatGpt 国内镜像网站集合 chatgpt接入微信 chatgpt接入谷歌浏览器 chatgptAI绘画 最后 chatGpt 这个说实话,不用我介绍大家也都懂。不如玩一个有意思的,这里我让chatGpt自己介绍一下他自己: 嗨,大家好,我是…

C++ [STL之vector模拟实现]

本文已收录至《C语言和高级数据结构》专栏! 作者:ARMCSKGT STL之vector模拟实现 前言正文空间结构默认成员函数构造函数拷贝构造函数赋值重载析构函数关于数据拷贝问题 迭代器容量操作查询容量容量操作 数据访问下标访问头尾数据访问 数据增删尾插尾删重…

学懂缓存雪崩,缓存击穿,缓存穿透仅需一篇,基于Redis讲解

在了解缓存雪崩、击穿、穿透这三个问题前,我们需要知道为什么我们需要缓存。在了解这三个问题后,我们也必须知道使用Redis时,如何解决这些问题。 所以我将按照"为什么我们需要缓存"、"什么是缓存雪崩、击穿、穿透"、&qu…

Linux学习笔记 --- Linux基础命令Part1

一. Linux的目录结构 目标:1. 掌握Linux系统的目录结构 2. 掌握Linux系统的路径表达形式 1.1 Linux系统的目录结构 我们知道,在操作系统中,文件系统的目录结构一般都是树形结构。Linux的目录结构是一个树型结构Windows 系统可以拥有多…

如何使用wireShark抓取还原文件

简介 WireShark的追踪流功能可以帮我们抓取从网络上下载的各种文件,接下来就演示下如何抓取并且进行还原。 使用Nginx搭建文件存储服务器 只要是通过http网站下载的包,都可以通过追踪流工具进行抓取。这里为了演示,临时搭建一个Nginx文件存…

Yolov8涨点技巧:MobileViTAttention助力小目标检测,涨点显著,MobileViT移动端轻量通用视觉transformer

在​crack缺陷检测项目原始0.739提升至 0.772 ,涨点明显,博主多个数据集亲测有效,实现暴力涨点; 现有博客都是将MobileViT作为backbone引入Yolov5,因此存在的问题点是训练显存要求巨大,本文引入自注意力的Vision Transformer(ViTs):MobileViTAttention 1. MobileViT介绍…

English Learning - L3 作业打卡 Lesson3 Day18 2023.5.22 周一

English Learning - L3 作业打卡 Lesson3 Day18 2023.5.22 周一 引言🍉句1: People said my mother was “a good egg”.成分划分弱读连读语调 🍉句2: She would always help anyone in need.成分划分连读语调 🍉句3: We never had to “walk…

1、MQTT协议入门以及mosquitto示例

1.什么是MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上&#xf…

一款好看的markdown编辑器:md-editor-v3

文章目录 md-eidtor-v3地址其它markdown编辑器🎄 md-editor-v3⭐️ 功能一览📦 安装💡 用法✍🏻 编辑器模式📖 仅预览模式 🗺 预览图🎁 Apis🔖 MdPreivew Props🔩 MdEdit…

c++基础概念,const与指针、引用的关系,auto,decltype关键字能干啥总得了解吧。总得按照需求自定义创建实体类,自己编写头文件吧

const限定符 有时我们希望定义这样一种变量,它的值不能被改变。例如,用一个变量来表示缓冲区的大小。使用变量的好处是当我们觉得缓冲区大小不再合适时,很容易对其进行调整。另一方面,也应随时警惕防止程序一不小心改变了这个值。…

邂逅Webpack和打包过程

1 认识webpack工具 2 webpack基本打包 3 webpack配置文件 4 编写和打包CSS文件 5 编写和打包LESS文件 6 postcss工具处理CSS 从脚手架打包成普通的htmlcssjs文件 内置模块path: 拼接路径 const path require("path")const filepath "C://abc/…

Systrace系列9 —— MainThread 和 RenderThread 解读

本文是介绍 Android App 中的 MainThread 和 RenderThread,也就是大家熟悉的主线程和渲染线程。文章会从 Systrace 的角度来看 MainThread 和 RenderThread 的工作流程,以及涉及到的相关知识:卡顿、软件渲染、掉帧计算等。 这里以滑动列表为例 ,我们截取主线程和渲染线程一…

InnoDB 在可重复读 RR 隔离级别下,能解决幻读问题吗?

InnoDB 在可重复读 RR 隔离级别下,能解决幻读问题吗? MySQL 在「可重复读」隔离级别下,可以很大程度上避免幻读现象的发生(注意是很大程度避免,并不是彻底避免),所以 MySQL 并不会使用「串行化」…

Pycharm中配置不了conda解释器

我安装的是pytorch的CPU版本,在Pycharm中配置conda环境时,每次添加完都不显示,搜遍了很多方法都没用。最后成功解决,这里将一些方法进行总结,方便大家解决问题。 我的情况和解决 问题情况以及显示 1.在Pycharm的日志…

GATK最佳实践之数据预处理SnakeMake流程

<~生~信~交~流~与~合~作~请~关~注~公~众~号生信探索> 写的数据预处理snakemake流程其实包括在每个单独的分析中比如种系遗传变异和肿瘤变异流程中&#xff0c;这里单独拿出来做演示用&#xff0c;因为数据预处理是通用的&#xff0c;在call变异之前需要处理好数据。 数据…

Java中如何使用策略模式减少 if / else 分支的使用

目录 1、策略模式 1.1 、策略模式包含三个角色&#xff1a; 2、需求 2.1 、传统方式 2.2 、策略模式实现 2.2.1 、新建PolicyPatternController.java 2.2.2 、Express.java(实体类) 2.2.3 、定义一个接口&#xff1a;PolicyPatternService.java 2.2.4 、定义3个实现类…

Python根据经纬度在地图上显示(folium)

Python根据经纬度在地图上显示&#xff08;folium&#xff09; 一、folium介绍1.folium.Map参数简要介绍2.folium.Marker参数介绍 二、Python根据经纬度在地图上显示&#xff08;示例&#xff09;1.经纬度坐标标记2.经纬度坐标分组标记 一、folium介绍 1.folium.Map参数简要介…

URLConnection(五)

文章目录 1. 断开与服务器的连接2. 处理服务器响应3. 错误条件4. 重定向5. 代理6. 流模式 1. 断开与服务器的连接 HTTP1.1 支持持久连接&#xff0c;允许通过一个TCP socket发送多个请求和响应。不过使用Keep-Alive时&#xff0c;服务器不会因为已经向客户端发送了最后一个字节…