魔法师盖城墙-第11届蓝桥杯Scratch国赛真题第4题

本文同步发表于”超平的编程课“公众号,更多教程,可移步至公众号。

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

第11届蓝桥杯青少年组国赛原定于2020年4月25日举行,因疫情推迟到2020年10月31日,并且改为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

魔法师盖城墙,本题是第11届蓝桥杯Scratch国赛真题编程第4题,中级组和初级组都有此题。题目要求考生编程实现当我们输入城墙规模,魔法师就能瞬间变出相同规模的城墙,本题难度系数为4。

一.题目说明

背景信息:童话世界里发生了一件大事,兽人族要进攻人类的国家,人类魔法师使用魔法修建了高高的魔法之墙,来抵御兽人族的进攻,让我们为魔法师们加油吧!

编程实现:当我们输入城墙规模,魔法师就能瞬间变出相同规模的城墙。

具体要求:

1). 点击绿旗,出现魔法师说:“输入m * n(m表示每层砖块的个数,n表示一共的层数,中间必须用乘号连接。m取值范国:1 < m < 15,n取值范围:1 < n < 15,选取m和n范围内的数值输入到对话框);

2). 例如8 * 12,点击之后,魔法师说“开始建造8 * 12的城墙”;

3). 盖出城墙。(大小参考值:30)

二.思路分析

本题一共有两个角色,分别是魔法师和砖块,如图所示:

相应的流程也非常清晰,根据用户输入的层数m和每层砖块数n,使用Scratch克隆建造一座m * n的城墙。这里的难点在于如何获取用户输入的m和n,尤其要注意用户输入的时候,可能没有空格,也可能带有空格。

比如8*12,*两边都没有空格,又比如8 * 12,*两边都有空格,再比如8 *12和8* 12,一边有空格,一边没有空格。因此,我们编写的程序要具备良好的容错性,能够同时处理好这些不同的情况,具体实现我们稍后再说。

三.编程实现

根据题目描述以及上面的思路分析,我们分3步来进行编程:

  • 魔法师询问并发号施令

  • 拆分字符串,获取m和n的值

  • 克隆砖块建造城墙

1.魔法师询问并发号施令

在点击绿旗后,魔法师首先会询问“输入m * n”,当用户输入完成后,魔法师会发号施令,说“开始建造m * n的城墙”。这需要使用问答指令,同时利用字符串连接运算指令拼接成一句完整的话,其代码如图所示:

执行完这段代码后,用户输入的内容就保存到变量“算式”中了。接下来,就需要对“算式”进行拆分,获取其中m和n的值了。

2. 拆分字符串,获取m和n的值

针对乘法算式m*n,不管中间有没有空格,也不管中间有几个空格,其关键在于*的位置,一旦确定了*的位置,就可以将算式一分为二,再分别对左边和右边的字符串下进行去空格处理,就可以得到m和n了。

所以,这里要分两步:

  • 确定*的位置

  • 去空格处理

先来实现第一步,确定*的位置,为了简单起见,可以定义一个自制积木,将其命名为”确定乘号位置“,代码如图所示:

代码也比较好理解,这里使用了一个计数循环,对”算术“字符串进行逐个遍历,如果字符为*,那么就其对应的编号保存到变量”index“中。

接下来,就可以分左右两边来进行去空格处理,同理,为简单起见,将其定义为自制积木”拆分字符串“,代码如图所示:

需要注意,此处的”字符串“和”索引“是自制积木的参数,也就是在自制积木中才能使用的变量。其中,”字符串“表示要拆分的目标字符串,”索引“表示要拆分的位置。

这里仍然采用了计数循环,第一个计数循环从1到索引的位置,如果字符不为空,则作为有效字符,追加到变量m中。第二个计数循环从索引+1的位置开始直到字符串结尾,如果字符不为空,则作为有效字符,追加到变量n中。这样就可以获取到m和n的值了。

自制积木定义好了,接下来需要使用了,在绿旗指令所在代码块的”说2秒“指令下面编写代码如下:

需要注意的是,这里的变量”m“和”n“的初始值要设为空字符串,不能设为0,因为整个过程中对”m“和”n“所做的是字符串连接操作,不是数学运算。

一旦获取到m和n的值了,接下来就可以建造城墙了,而建造城墙是在”砖块“角色中进行的,因此,需要发送一个广播消息。

3. 克隆砖块建造城墙

当”砖块“角色接收到广播消息之后,就可以开始克隆了,克隆的思路也很简单,就是一层一层的克隆。

先将本体移到舞台左下角,每一层要克隆m个,就是重复执行m次,每克隆一个,就右移30步左右。一层克隆完毕,将本体移到左边,同时y坐标增加相应距离,开始克隆第二层,依此类推,一共有n层,所以需要将这个过程重复执行n次,其代码如图所示:

至此,我们的作品就大功告成啦,有了高高的魔法之墙,就可以抵御兽人族的进攻了。

四.总结与思考

本题难度适中,代码量大概在85个积木块左右,涉及到的知识点包括:

  • Scratch问答指令,包括”询问并等待“和”回答“指令;

  • 字符串连接运算,以及字符串拆分的编程技巧;

  • 变量及其初始化,尤其要注意作为字符串时的初始化;

  • 计数循环,要结合变量和指定次数循环来实现;

  • 自制积木的定义使用及参数的理解;

  • Scratch克隆编程。

需要注意的是,在Scratch中,字符串非常灵活,如果是一个纯数字字符串,只要将它放在需要数字的指令中,它就会自动变成数字,比如”重复执行10次“指令、加减乘除等运算指令。

针对本作品,有几个地方还可以进一步完善:

1). 对于用户输入无效的算式,没有做相应的处理,在实际编程时,是必须要进行判断并给出反馈提示的;

2). 对于m和n的取值范围,都限定在1~15之间,因为舞台空间有限,此处也没有做相应处理;

如果能处理好这些细节,我们的程序就会变得更加健壮,你想好怎么做了吗?

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值