绘制金字塔-第10届蓝桥杯Scratch选拔赛真题精选

news2024/12/24 9:22:17

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

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

绘制金字塔,本题是第10届蓝桥杯Scratch真题,出现在2019年的市选拔赛考试中,题目要求使用Scratch中的画笔相关指令绘制金字塔结构,要求先画出一个长方形砖块,然后一块一块堆成金字塔。

先来看看题目的要求吧。

一.题目说明

准备工作:

导入小猫角色,使用默认白色背景。

编程实现

用程序,画出长方形砖块,堆成金字塔,要求有一块一块砖块的效果。

评判标准:   

  • 20分:能够画出一个长方形(这将成为你画金字塔的砖块),一次性画成一块砖;

  • 40分:能够画出金字塔(须画出10层以上的金字塔,含10层),金字塔最下面一层的砖块数,等于金字塔的层数,每上一层,砖块的数量减1,直到最上面的一层,砖块为1(如上图所示);

  • 60分:能够让金字塔居中显示在舞台区;

  • 80分:能够画出20层以上的金字塔,并居中,且全部显示在舞台区;

  • 100分:能够画出30层以上的金字塔,并居中,且全部显示在舞台区,并使金字塔从上到下有颜色的渐变。

二.思路分析

本题属于Scratch画笔绘制作品,只有一个默认的小猫角色, 如图所示:

根据题意并结合效果图,我们可以得知,金字塔的基本单元是砖块,也就是一个小长方形,并且长方形的长是宽的2倍(这是一个非常重要的信息)。

所以,我们的第一步,就是要绘制一个小长方形,为了提高代码重用性(节省代码),可以使用函数的编程思想,也就是Scratch3.0中的自制积木来绘制小长方形,然后再使用自制积木一层一层的来绘制金字塔。

这里有两个难点:

  • 如何自动计算砖块的大小,层数越少,砖块越大,层数越多,砖块越小;

  • 如何获取每一层第一个砖块的位置,每往上一层,砖块数量就减1,因此其位置(包括x坐标和y坐标)在不停的变化;

接下来,就由超平老师为你一一解答,绘制出完美的金字塔吧。

 

三.编程实现

根据题目要求和思路分析,我们分如下3步来编写程序:

  • 绘制长方形砖块

  • 绘制金字塔

  • 增加问答绘制不同高度的金字塔

1. 绘制长方形砖块

绘制长方形非常简单,重点需要考虑如下两个问题:

1). 这个小长方形的长和宽是多少?

2). 长宽是固定值还是变化的?

我们不妨先画一个草图如下:

这里有4座不同的金字塔,其层数分别是10、15、20、30。通过比较,结论一目了然,小长方形的长宽是变化的,随着层数的增加而减小,层数越多,长宽就越小。

因此,砖块的长度应该使用变量来表示,在函数(也就是自制积木)中,就是所谓的参数,我们定义自制积木如下图所示:

有了这个自制积木,我们就可以绘制出任何长度的砖块来,只需要在使用自制积木的时候填入砖块的大小即可。

2. 绘制金字塔

有了绘制砖块的自制积木,接下来我们就可以使用它来绘制金字塔了。在绘制的过程中,我们需要考虑如下3个问题:

1). 砖块的长度是多少?

2). 每一层绘制多少个砖块?

3). 每一层砖块的起点在哪儿?

尽管我们可以绘制任意层数的金字塔,但针对每一次独立的绘制,金字塔的层数是确定的,为了方便,在这里添加一个变量“层数”,表示要绘制金字塔的层数,我们可以手动的设置变量的值,比如,将层数设置为20,如图所示:

而一旦层数确定了,那么砖块的长度也就可以确定下来了。Scratch舞台的长度是480步(像素),我们不妨将最底层的砖块从左到右填满舞台,而金字塔最下面一层的砖块数,等于金字塔的层数(题目的评判标准中第2条已给出)。

所以,砖块的长度就等于 480 / 层数,相应的再定义一个变量“长度”,并将长度设为 480 / 层数,如图所示:

根据题目评判标准中的第2条描述,金字塔最下面一层的砖块数,等于金字塔的层数,每上一层,砖块的数量减1,直到最上面的一层,砖块为1。

因此,我们可以定义一个变量“个数”,用来表示每一层要绘制的砖块数量,由于我们是从底层往上一层一层的绘制,所以刚开始的时候,我们将个数设置为层数即可,如图:

稍微有点麻烦的就是第3点了,即砖块的起点,每一层的起点都不相同,怎么设置呢?

方法比较多,我就不一一列举了,超平老师在这里介绍一个小技巧,简单而又巧妙。

每一层都是从左至右来绘制的,假设当前层砖块数量为n,当第n个砖块绘制完成后,将小猫左移n个砖块的距离,这样就回到了第一个砖块的位置,然后在x轴方向右移半个砖块的距离,并在y轴方向上移一个砖块的高度,这样就可以接着绘制下一层了。

绘制的核心代码如下:

简要说明如下:

1). 这里有两层循环,内层循环用于绘制当前层的砖块,外层循环则表示一层一层的绘制;

2). 这里的”将x坐标增加“指令使用了两次,第一个指令的作用是让小猫角色回到当前层的起点,第二个指令的作用是再右移半个砖块的距离;

3. 增加问答绘制不同高度的金字塔

在上面的代码中,层数设置为20,我们可以将层数改成其他的数字,从而绘制出不同高度的金字塔。

实际上,还有一个更好的方法,就是使用问答指令,让用户输入任意数字,然后绘制出对应层数的金字塔,完整的代码如下:

需要说明的是,由于是从舞台底部开始绘制的,如果层数比较小,小猫会因为碰到舞台边缘,导致绘制效果不理想,所以建议你输入的层数大于10。如果确实想绘制10层以下的金字塔,可以把起点的y坐标设置得靠上一点,比如-100。

至此,整个作品就创作完成了,你可以输入不同的层数,绘制出不同高度的金字塔了,如果想加快绘制的速度,可以设置为加速模式。

四.总结与思考

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

  • 循环编程,重点是循环嵌套的使用;

  • 画笔相关指令,包括擦除、落笔、抬笔、设置画笔粗细、设置画笔颜色等;

  • 自制积木及其参数的使用;

  • 变量的使用;

  • Scratch问答指令;

  • 如何精确计算角色的位置。

本题有一定的难度,有两个关键点,一是要找到各个变量之间的关系,即层数、砖块长度、每层砖块数量之间的关系,二是如何计算每一层第一个砖块的位置。

在绘制金字塔的过程中,我们又一次使用到了数学知识及其运算,编程和数学真是俩好兄弟,永不分家呀。之前分享的第12届蓝桥杯Scratch省赛3真题第4题《修建金字塔》和此题非常类似,有兴趣的同学可以去看看。

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

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

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

相关文章

基于java(springboot)校园新闻管理系统源码(java毕业设计)

基于java(springboot)校园新闻管理系统 校园新闻管理系统是基于java编程语言,MySQL数据库,和springboot框架,用idea开发工具开发的设计,本设计分为学生用户,管理员两个角色, 学生的主要功能是可以注册登陆…

Cpolar实现虚拟机内网穿透,搭建私人云服务器

Cpolar实现虚拟机内网穿透,搭建私人云服务器 一、Cpolar功能介绍 Cpolar官网 Cpolar是一个安全的内网穿透的服务,可以将内网下的本地服务器通过安全隧道暴漏给公网。允许公网用户可以正常访问内网服务,是一款免费的内网穿透软件。只需要一行命令&#…

Python小炼(1):初识Python

"也许对我来说,太多拘束可能" 本篇的主要内容,针对的是一些常见的语法,在python中是怎样表示的,例如,python变量如何定义、选择、循环、判断结构是如何表示的?python函 数定义是怎么定义的…… ----前言 一、认识pyt…

无需代理及注册在VsCode中使用ChatGPT

无需代理及注册在VsCode中使用ChatGPT 安装 要安装扩展,请按照下列步骤操作: 1.打开 Visual Studio Code 2.单击左侧栏中的扩展程序图标 3.搜索"ChatGPT中文版" 4.点击安装按钮安装扩展 5.重启VSCode 用法 开始使用 在编辑器中右键触发…

【LeetCode每日一题:1691. 堆叠长方体的最大高度~~~排序+贪心】

题目描述 给你 n 个长方体 cuboids &#xff0c;其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti]&#xff08;下标从 0 开始&#xff09;。请你从 cuboids 选出一个 子集 &#xff0c;并将它们堆叠起来。 如果 widthi < widthj 且 lengthi < …

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化

文章目录零、本讲学习目标一、对象序列化与反序列化&#xff08;一&#xff09;对象序列化与反序列化概念&#xff08;二&#xff09;对象序列化与反序列化示意图&#xff08;三&#xff09;实际开发中序列化和反序列化的场景&#xff08;四&#xff09;实现对象序列化的两种方…

26岁,干了三年测试,月薪才12k,能跳槽找到一个更高薪资的工作吗?

在我们的身边&#xff0c;存在一个普遍现象&#xff1a;很多人从事软件测试岗&#xff0c;不计其数&#xff0c;经历的心酸难与外人道也。可是技术确难以提升、止步不前&#xff0c;薪资也只能看着别人水涨船高&#xff0c;自己却没有什么起色。 虽然在公司里属于不可缺少的一…

计算机网络:数据链路层

数据链路层 数据链路层主要处理单个链路上如何传输数据&#xff0c;并且向网络层向上提供服务 1. 数据链路层概述 1.1 术语介绍 主机拥有全部的计算机网络结构&#xff0c;路由器只有一部分 各个路由器之间由物理层连接 红线为发送的信息 1.2 数据链路层的三个重要问题 封装…

职业危机:从无到有,从弱到强;反思再反思和应对措施

一、写在开头 每天每周不写点东西&#xff0c;不把脑中的疑惑写明白&#xff0c;就感觉不到每天的进步。 每天没进步&#xff0c;这北漂生活&#xff0c;何时是个头啊。 可以北漂10年&#xff0c;也可以20年&#xff0c;但不可能是一辈子。 因为我不是北京人呐。 二、持续转…

Redis的字符串是怎么实现的

本篇会讲以下内容&#xff1a; Redis字符串的实现 Redis字符串的性能优势 Redis字符串的实现 Redis虽然是用C语言写的&#xff0c;但却没有直接用C语言的字符串&#xff0c;而是自己实现了一套字符串。目的就是为了提升速度&#xff0c;提升性能&#xff0c;可以看出Redis为…

Nacos的服务注册之客户端

服务注册到Nacos以后,会保存在一个本地注册表中,这个注册表是一个map. private Map<String, Map<String, Service>> serviceMap new ConcurrentHashMap<>(); key是namespace,用来隔离环境 value又是一个map      key是group      value又是一个s…

java计算机毕业设计springboot+vue远程教育系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…

以太网 DHCP(简介、DHCP工作原理、租期时间)

2.13.0 以太网 DHCP&#xff08;简介、DHCP工作原理、租期时间&#xff09; DHCP的作用&#xff1a;企业网络中存在大量的终端设备&#xff08;PC&#xff09;&#xff0c;管理员配置设备上网参数工作量大&#xff0c;而且效率不高&#xff0c;手动配置容易出错&#xff0c;DH…

数据库复杂sql如何编写入手

前言&#xff1a;说到数据库我想大家都不陌生&#xff0c;对主流的数据库都会基本使用&#xff0c;但是要写好sql完成复杂的sql编写是需要对数据库原理&#xff0c;sql脚本语法有一定的了解的&#xff0c;但是对于开发人员来说&#xff0c;平常都是在curd写一些业务代码&#x…

Flutter 中使用 OpenAI GPT-3 进行语义化处理

Flutter 中使用 OpenAI GPT-3 进行语义化处理 前言 最近 openai 的 ChatGPT 火了&#xff0c;然后我也想着用它来做点什么&#xff0c;于是就写了个 调用 openai api 语言执行工具&#xff0c;跑个测试&#xff0c;以后再有功能也可以在这个程序上面试验。 copilot 也是用的 op…

m基于FPGA的64QAM调制解调、载波同步verilog实现

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 64QAM&#xff08;正交幅度调制&#xff09;&#xff0c;在使用同轴电缆的网络中&#xff0c;这种数字频率调制技术通常用于发送下行链路数据。64QAM在6mhz信道中&#xff0c;64QAM的传输速率非常…

Qt编写视频监控系统(移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等)

一、前言 得益于标准的onvif协议&#xff0c;各大监控厂商的设备都会支持onvif协议&#xff0c;在onvif协议中就包括了事件订阅机制&#xff0c;通过这个机制&#xff0c;可以拿到各种报警事件&#xff0c;比如移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等&#xff0c…

深度学习-环境搭建(安装Pytorch)

文章目录前言一、安装Anaconda二、查看电脑显卡支持的CUDA版本三、更新CUDA版本四、创建并激活Anaconda虚拟环境需要创建虚拟环境而最好不在base下载的原因五、安装pytorchPS&#xff1a;注意事项六、下载其他库七、检查安装结果总结前言 入门深度学习过程中&#xff0c;我决定…

[附源码]JAVA毕业设计鞋店销售管理(系统+LW)

[附源码]JAVA毕业设计鞋店销售管理&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

都在说软件测试真的干不到35岁,那咋办呢...我都36了...

作为一个已经36岁但仍奋战在测试一线的老测试员&#xff0c;被人无数次问到这个问题&#xff0c;也回答过无数次&#xff0c;刚看到 程序员真的干到35岁就干不动了吗 想到&#xff0c;在测试行业&#xff0c;也有很多年轻人在焦虑这个问题。现在小编就从管理、技术、思维、体力…