玛雅神庙-第12届蓝桥杯Scratch国赛真题第6题

本文转载于“超平的编程课”公众号。

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

第12届蓝桥杯青少年组国赛于2021年5月29日举行,本次赛事仍然采取了在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

Scratch玛雅神庙,本题是第12届蓝桥杯Scratch国赛真题编程部分的第6题,初级组和中级组都有此题。题目要求考生使用Scratch编程实现开启玛雅神庙大门效果,难度系数为5,分值为100分。

作品以玛雅神庙和罗盘为素材,可以让孩子了解玛雅文明,开阔孩子的视野。同时要按要求完成作品,也是对逻辑思维能力的一次锻炼和洗礼,这是一道含金量比较高的编程题。

先来看看题目的详细说明和要求吧。

一. 题目说明

编程实现:玛雅神庙。

具体要求:

1).点击绿旗,出现对应的角色与背景;

2). 按下空格键,玛雅罗盘说:“请观察火把点亮的顺序”,然后神庙中的四个火把按照随机顺序分别亮起来并熄灭一次;

3). 玛雅罗盘说:“请按照刚才的顺序点亮所有火把”,然后通过上、下、左、右按键控制手指进行对应方向上的移动,手指移动到一个火把上,按下S键,火把会再次亮起;

4).四个火把全部亮起,如果点亮顺序错误,玛雅罗盘说:“错误”,游戏结束;

5). 四个火把全部亮起,如果点亮顺序正确,玛雅罗盘说:“正确”,并按照每个火把代表的数字,分4次顺时针旋转到对应的数字位置,每次间隔1秒,顺序与点亮火把的顺序一致;

6). 玛雅罗盘转动成功后,大门打开。

评判标准:

  • 5分:满足要求1;

  • 10分:满足要求2;

  • 10分:满足要求3;

  • 25分:满足要求4;

  • 45分:满足要求5;

  • 5分:满足要求6。

二.思路分析

由于题目描述较多,为了理清思路,我们先来绘制一个简单的流程图,如图所示:

这里有三个关键步骤:

  1. 如何让4个火把按随机顺序点亮;

  2. 如何判断两次点亮顺序是否一致;

  3. 如何按照点亮顺序转动罗盘;

赶紧调动你聪明的脑细胞想想,该怎么做呢?

仔细分析,可以发现,这里有两个顺序,一是开场的随机点亮4个火把的顺序,二是玩家点亮火把的顺序,并且这两个顺序都需要保存起来,便于后续比较,并作为罗盘转动的依据。因此,这里需要使用“列表”的数据结构来保存这两个顺序。

所以,解决本题的关键点在于使用“列表”数据结构来保存火把点亮的顺序,同时灵活运用列表相关操作来实现上述功能。

三.程序实现

根据上述分析,接下来我们就按照如下5个步骤编写程序来完成作品:

  1. 四个火把按照随机顺序点亮然后熄灭

  2. 等待玩家点亮火把并记录顺序

  3. 比较两次点亮顺序

  4. 转动罗盘

  5. 打开大门

开始编程咯

1. 四个火把按随机顺序点亮然后熄灭

首先,我们创建两个列表,分别命名为“火把顺序”和“点亮顺序”,前者表示电脑随机点亮火把的顺序,后者则表示玩家点亮火把的顺序,并确保在点击绿旗时,清空列表。

所有的说话内容都是由罗盘角色负责的,因此,需要先从罗盘角色开始编写程序,当按下空格键时,先提示“请观察火把点亮的顺序”,针对这个需求,通常有三种实现方式:

  • 使用“当按下空格键”指令;

  • 使用“如何...那么”指令并结合侦测模块中的“按下空格键”指令;

  • 使用“等待”指令结合侦测模块中的“按下空格键”指令;

从逻辑的严谨性和代码的简洁性两个角度考虑,第三种方式无疑是最佳选择。在罗盘角色中编写代码如下:

接下来就需要考虑如何随机点亮顺序了,我们可以使用数字1、2、3、4表示4个火把的点亮顺序,并保存到“火把顺序”列表中,这通常也有两种实现方法:

  • 先依次将1、2、3、4插入到列表,然后打乱顺序;

  • 向列表的随机位置处依次插入1、2、3、4;

从代码的简洁性角度出发,选择第二种方法更为简单,代码如下:

这里的关键就在于“在列表的第n项前插入xx”指令,如果列表中是空的,能够插入的位置就只有一个,如果列表中有1个数据,那么新插入的数据就有两个位置可以选择了,在第一个数据之前或之后,相应的,如果列表中有两个数据,那么新插入的数据就有三个位置可以选择,以此类推...,也就是这个位置可以随机数来获取,但随机数的范围和列表的项目数有关,这就是上述代码的作用。

接下来,罗盘就需要告诉4个火把分别点亮自己了,这需要用到事件广播机制,我们可以遍历“火把点亮”列表,根据列表中的数字,依次给4个火把角色发送广播,传统的做法是使用“如果...那么”指令判断数字,然后分别发送广播消息。

在这里超人老师教你一招,可以利用随机数发送广播,广播消息的名字就是数字1、2、3或4,结合循环,可以让程序更为简单,代码如下:

 

对应的,火把1角色接收到广播消息“1”,先把火把切换到点亮造型,等待1秒后,再切换到熄灭造型,代码如下:

同理,其余3个火把角色,在接收到消息“2”、消息“3”、消息“3”的时候,都需要做相同处理,代码和火把1角色基本一样,这里就不再贴出了。至此,按随机顺序点亮4个火把然后熄灭的功能就已经实现了。

2. 等待玩家点亮火把并记录顺序

在罗盘角色在发送完4个广播之后,需要提示“请按照刚才的顺序点亮所有火把”并等待玩家点亮火把,在罗盘角色代码下面继续编写代码如下:

这里,之所以要等待1秒,是因为4个火把从点亮到熄灭之间的时间也刚好是1秒。

发送完广播之后,4个火把角色就需要处理广播消息,并等待手指移到该火把上并按下S键点亮火把,一旦点亮火把,此时就需要将该火把的序号保存到“点亮顺序”列表中,并判断4个火把是否都点亮了,如果都点亮了,就需要判断二者的顺序是否正确了。

以火把1角色为例,其代码如下:

相应的,其余3个火把角色也需要编写这段代码,唯一的不同就是向列表中加入的数字分别要改为2、3、4。

在点亮火把过程中,需要控制手指角色移动,这部分的逻辑比较简单,就是根据↑、↓、←、→四个方向键的按键情况分别进行上下左右移动,代码如下:

至此,等待玩家点亮火把并记录顺序的功能就已经实现完毕。

3. 比较两次点亮顺序

接下来,就需要比较计算机随机点亮顺序和玩家点亮顺序了,其实就是判断”火把顺序“和”点亮顺序“这两个列表是否相等即可,关键是如何比较呢?

简单的想法自然是直接比较两个列表,但是需要注意这种方式在scratch中并不总是正确,而且在所有的编程语言中,一般也不会直接使用这种方式。

不妨换一个思路,分别将两个列表中的数字进行连接,得到一个字符串,然后再进行比较,这个比较是在罗盘角色中进行的,代码如下:

需要注意的是,对于字符串而言,其初始值要设置为空,如果二者顺序相同,则说”正确“,然后广播”旋转“,否则说”错误“,结束游戏。

4. 转动罗盘

当罗盘接收到”旋转“广播之后,需要根据点亮顺序,依次旋转罗盘,这是本作品的又一难点,因为这里的顺序是随机的,每次都是不同的。实现方法有多种,我这里介绍最简单的一种,也是小朋友最容易理解的一种方式。

首先要找到关键点,在罗盘旋转的过程中,变化的是什么呢?

毫无疑问是方向,而且这里的1、2、3、4对应的方向值分别是90、-90、180和0。如此一来就好办了,如果当前的数字是1,那么就让罗盘重复右转直到方向为90度,如果当前数字是2,那么就让罗盘重复右转直到方向为-90,以此类推...

在这个过程中,我们根本不用关心,当前罗盘在哪个位置,是不是很方便,具体实现代码如下:

5. 打开大门

最后一步就是打开大门了,这个非常的简单,大门角色在接收到”开门“广播消息之后,直接切换造型即可,代码如下:

四.总结

至此,整个作品就全部完成了,总体来说,本题还是有一定难度的,对考生的要求还是比较高的,总代码量为183个积木,涉及的知识点包括:

  • 造型的切换,通过造型切换实现点亮熄灭火把,开门等效果;

  • 列表的操作,尤其是实现随机顺序的列表技巧以及两个列表的比较;

  • 事件广播机制,重点注意一下结合随机数实现广播的编程技巧;

  • 计数循环的使用,在遍历列表中经常使用这种循环技巧;

  • 方向的妙用,只要是旋转运动,通常都可以考虑”方向“指令;

  • 等待条件指令的使用,本作品中多次使用该指令,来确保程序的严谨性;

如果需要本作品素材和源码的,可以联系本人,或者移步到“超平的编程课”公众号。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 青少组蓝桥杯scratch国赛真题是面向青少年参赛的一个编程竞赛。蓝桥杯是中国最大的国家级高校计算机竞赛,它旨在激发青少年对计算机科学的兴趣和热情。 该比赛要求参赛者使用Scratch这个简单易学的编程语言来完成编程任务。Scratch是一种图形编程环境,可以通过拖拽图形块来编写程序。它不需要掌握复杂的语法和编程知识,非常适合初学者。 蓝桥杯青少组的Scratch真题通常涵盖各种主,如游戏设计、动画制作和创意编程等。参赛者需要根据目要求设计和完成一个创意的项目,同时需考虑实现的难度和创新性。 在比赛中,参赛者需要展示他们在程序设计、逻辑思维和创作能力方面的才能。不仅需要完成项目的基本要求,还需要有独特的创意和技术上的突破。 蓝桥杯Scratch国赛真题是通过评委进行评分的,评分标准包括功能完整性、创新性、用户体验和代码质量等。评委会根据项目的表现和解决问的方法来评定参赛者的成绩。 通过参与蓝桥杯青少组的Scratch国赛,青少年可以锻炼他们的编程技能和创造力,增加对计算机科学的兴趣与了解。这项比赛为他们提供了一个展示自己创意和才华的平台,同时也能为参赛者带来学习和成长的机会。 ### 回答2: 青少组蓝桥杯是中国青少年计算机编程竞赛的一个分支,以挖掘和培养青少年计算机编程潜力为目标。蓝桥杯scratch国赛是该组别中一个重要的赛事,其中使用了Scratch编程语言。 Scratch是麻省理工学院开发的一种图形化编程语言,适合初学者入门。蓝桥杯scratch国赛真题主要考察参赛选手的Scratch编程能力和创造力。根据往年比赛目,这些真题通常涉及动画制作、游戏设计和问求解等方面。 选手在参赛前,首先需要了解Scratch语言的基本知识和操作方法。比赛中,选手需要根据目要求,在Scratch平台上进行编程创作。他们会利用Scratch提供的图形化积木,完成任务的实现。这些任务可能要求设计一个动画、制作一个游戏,甚至是解决某个实际问。 参赛选手需要熟悉Scratch的各类积木,如控制积木、事件积木、运算积木等,才能准确表达创意,完成任务要求。同时,他们还需要具备逻辑思维和创新能力,能够在限定的时间内进行快速设计和开发。 参加蓝桥杯scratch国赛有助于培养青少年的计算机编程兴趣和能力。这项比赛为他们提供了一个展示自己创意和才华的舞台。而通过参与比赛,他们还能通过与其他优秀选手交流学习,提升自己的编程水平。 总之,青少组蓝桥杯scratch国赛真题要求选手在Scratch平台上进行编程创作,并展示他们的创造力和解决问的能力。这项赛事不仅是一种竞赛形式,更是促进计算机编程教育普及和青少年创意能力培养的重要活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值