九宫格游戏-第14届蓝桥杯省赛Scratch初级组真题第5题

news2025/1/20 3:35:06

 [导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第134讲。

九宫格游戏,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程初级组真题第5题,题目要求通过编程实现九宫格游戏。玩家将右侧的数字依次拖到左边的九宫格中,如果横、竖、对角线上对应格子内的3个数字相加都等于15,则说正确,否则说错误。

先来看看题目的要求吧。

一.题目说明

编程实现:

九宫格游戏。

具体要求:

1). 点击绿旗,角色、背景如图所示(考生自行完成九宫格,每个方格填充的颜色与舞台背景颜色可随机改变,点击绿旗立刻呈现效果);

2). 可用鼠标将数字(1-9)角色拖拽到九宫格的九个格子中;

3). 当九宫格填满数字时,且横、竖、对角线上对应格子内的3个数字相加都等于15,机器猫说:"正确!"2秒后回到初始状态;

4). 当九宫格填满数字时,且横竖、对角线上对应格子内的3个数字相加不都等于15,机器猫说:"错误!"2秒后回到初始状态;

5). 重复执行2)、3) 、4)步骤。

评判标准:

  • 10分:满足"具体要求"中的1);

  • 20分:满足"具体要求"中的2);

  • 20分,满足"具体要求"中的3);

  • 20分:满足"具体要求"中的4);

  • 10分:满足"具体要求"中的5)。

二.思路分析

本题包含10个角色,分别是9个数字和机器猫,如图所示:

这里的九宫格需要考生自行创建,和第四题《像素画板》一样,不能直接绘制整个九宫格,而是创建一个方格,然后使用克隆生成九宫格。

在角色列表区,选择绘制角色,如图:

角色造型如下:

题目要求每个方格填充不同的颜色,但是颜色可以随机改变,通常有如下两种方法:

  • 绘制9个造型,并填充不同的颜色;

  • 绘制1个造型,通过颜色特效来设置不同颜色;

相比较而言,使用第二种方式更为简单,尤其是在争分夺秒的竞赛考试中,使用后者可以节省不少时间。

有了方格角色,就可以使用克隆生成一个九宫格,将数字拖拽到九宫格中是比较容易的,关键是我们如何知道每个方格中存放了哪个数字呢?

相信聪明的你已经猜到了,可以使用列表来保存每个方格中的数字,如图:

初始情况下,将列表项都设置为0,一旦将摸个数字拖到对应的格子中,就更新对应的列表项。

当所有的数字都拖拽完后,就可以判断结果了,题目要求横、竖、对角线上对应格子内的3个数字相加都等于15,一共有如下8种组合:

横向组合:1、2、3 | 4、5、6 | 7、8、9

竖向组合:1、4、7  | 2、5、8   |  3、6、9

对角线组合:1、5、9  |  3、5、7

当然,在拖拽数字的过程中,还要考虑如下细节:

  • 如何得知当前是哪个方格;

  • 如何将数字放在格子中间位置;

  • 如果格子中已经有数字了,是否可以再放第二个数字;

  • 已经放到格子中的数字,能否再次拖拽;

看到这里,是不是有一种似曾相识的感觉,实际上,这和第12届的选拔赛真题《植树节种树》有异曲同工之妙,相似的场景,相同的解题思路。

接下来,我们进入具体的编程实现环节。

三.编程实现

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

  • 数据准备

  • 生成九宫格

  • 拖拽数字

  • 判断结果

1. 数据准备

所谓的数据准备,是指创建列表和变量,根据题目描述,我们需要创建一个列表用来保存每个格子摆放的数字,不妨命名为”九宫格“。

同时,还需要创建两个列表”x坐标“和”y坐标“,用于存放每个格子的坐标,它是后面数字摆放位置的依据,这可以确保将数字摆放到每个格子的中心。

创建3个列表如图所示:

每个列表都有9项,分别表示每个格子的状态和坐标值(包括x坐标和y坐标)。

对于列表,通常是使用编号来获取或设置列表项,如何让每个格子和列表建立联系呢?

这就需要给每个克隆出来的格子分配一个ID,所以需要创建一个私有变量”_ID“。同时,还需要创建一个变量”当前格子“用于保存当前所操作的格子。

创建上述两个变量,如图所示:

需要注意,”_ID“是私有变量,需要在格子角色中创建,”当前方格“是全局变量。

2. 生成九宫格

这是一个典型的3行3列的克隆场景,我们创建一个自制积木用于生成九宫格,在格子角色中,编写代码如下:

在创建自制积木的时候,需要勾选”运行时不刷新屏幕“,这可以确保当点击绿旗时,立刻呈现九宫格。

然后在绿旗下,调用自制积木,代码如下:

相应的,在克隆体启动时,显示角色,并设置列表中的值,代码如下:

运行程序,可以生成一个九宫格,同时每个格子都有自己的_ID,ID值分别为1~9,如图所示:

这里将每个格子的ID值显示出来,是为了让你看的更清楚。当然,这也是一个调试的小技巧,建议你在编程的时候多用用,测试完毕,删除这一行代码即可。

对应的3个列表,数据如下:

使用鼠标将数字拖拽到九宫格时,怎么知道当前是哪个方格呢,可以直接在方格克隆体中增加一个判断即可,代码如下:

3. 拖拽数字

这里的9个数字,其逻辑和代码基本上是一样的,我们以数字1为例。

首先,设置好角色的初始位置,代码如下:

拖拽通常使用”当角色被点击“结合重复执行指令,代码结构如下:

一旦松开鼠标,数字就停在当前位置了,怎么确保数字已经放到格子上去了呢,我们可以增加一个判断,如果碰到格子,就允许放置,否则就回到原位,继续编写代码如下:

是不是只要拖拽到九宫格中就可以了呢?

当然不是,还得看当前位置是不是已经有其它的数字,所以还需要进行判断。

如果当前格子是空着的,就摆放拖拽的数字,并更新列表中的值,否则数字回到原处,对应的代码如下:

还有一个小问题,如果数字已经摆放好了,就不应该再拖拽了,如何避免这个问题呢?

可以使用一个变量,用于表示数字的状态,其中1表示可以拖拽,0表示不能拖拽,先将初始值设为1,一旦数字摆放好,立刻将其设置为0,然后的点击的时候进行判断即可。

增加代码如下:

注意,为了方便,这里的变量”_状态“,是一个私有变量,这样9个数字都可以使用相同的名字,互不干扰。

其它8个数字角色的代码,和数字1基本一样,只需要修改一下角色的坐标和列表的替换值即可。

4. 判断结果

当所有数字都摆放完毕,就需要判断正确和错误了,我们如何知道数字摆放完毕了呢?

答案是九宫格列表,列表的初始值都是0,每摆放一个数字,其列表项就更新为对应的数字了,所以当列表中没有0时,就说明所有的数字都已经摆放完毕。

需要注意的是,一共有8种组合,如果使用与运算指令,代码将会变得特别长,操作起来很不方便,可以使用条件嵌套语句,切换到机器猫角色,编写代码如下:

代码不难理解,这里使用了重复执行指令,以满足要求5),注意,在判断完成之后,使用了”广播并等待“指令,发送了一个广播消息。

相应的,9个数字角色在接收到广播消息后回到原来位置,并恢复角色的状态和列表中的值,以数字1角色为例,编写代码如下:

其它8个角色都需要做相同的处理,这里就不再列出代码了。

至此,整个作品就创作好了,赶紧来体验一下吧,你知道怎么摆放才是正确的么。

四.总结与思考

本题是初级组编程部分第5题,分数为80分,积木块数量150个左右(9个数字角色的代码基本一样,只算一个),涉及到的知识点主要包括:

  • 绘制角色;

  • 克隆编程,尤其是多行多列的克隆技巧;

  • 自制积木,重点是不刷新屏幕的设置;

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

  • 列表操作,包括增删改查操作;

  • 条件指令的多层嵌套;

  • 事件编程,包括角色点击和广播消息;

作为初级组最后一题,本题难度较大,完成时间大概在35分钟左右,对于大部分同学来说,最大的问题就是完全没有思路。

有些考生之前做过《植树节种树》这道题,结果也没有完成此题,说明理解不够深刻,还不能做到灵活运用。

所以,在学习编程的过程中,除了多练习,还要多思考、多总结,这样才能做到融会贯通。

你知道吗,在中国有两幅神秘的图案,分别是河图和洛书。河图”是上古伏羲时,一尊叫做“龙马”的神兽从黄河里驮出来的,伏羲据此画出了八卦;而“洛书”则是大禹时,一只从洛河里浮出的神龟背上的图案,大禹据此作出了《洪范》九畴。

因此,河图洛书被认为蕴含了天地之理,是中华文明的源头之一。

常见的黑白点“洛书”如下图所示,图中以白点表示阳数,即奇数;黑点表示阴数,即偶数。

关于这个图式,自古传有一句口诀:戴九履一,左三右七,二四为肩,六八为足,五居中央。如果将这些黑白点用数字来表示,就可以得到九宫图:

而这也是本题中正确答案的数字排列方式。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要素材和源码的,可以移步至“超平的编程课”gzh,或者私信本人。

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

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

相关文章

渗透无回显,放弃 or 看这篇文章

渗透无回显,放弃 or 看这篇文章 1.DNSlog工具2.DNSlog回显原理3.无回显的XXE 1.DNSlog工具 如果有自己的服务器和域名,可以自建一个这样的DNSlog平台用于进行渗透数据外带,或者直接使用BugScan团队开源的工具搭建即可: Github:D…

初识kubernetes

初识kubernetes 1.应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与缺点:不能为应用程…

汽车牌照目标检测(Python代码)

1.数据集 Chinese City Parking Dataset 2.代码流程: 代码的主要流程如下: 导入所需的库和模块,包括警告过滤、数据处理、数据可视化等。 创建用于显示样本图像的子图。 从数据集中加载样本图像并显示在子图中。 提取样本图像的元数据&…

2023HAS华为分析师大会:华为认证推动数字化转型向前发展

4月19日,华为数字化人才成熟度模型正式作为TM Forum TOD (Tech Organization Design)标准文档对外发布。该模型由华为联合TMF组织、运营商客户专家学者共同研发,旨在帮助企业从组织、人才、文化维度进行评估,指导人才发展。 在2023华为分析师…

基于混沌集成决策树的电能质量复合扰动识别(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【mongoose】vue3+vite使用mongoose | mongoose7.0使用

前言 注意: 个人认为中文文档仅适合学习参考,英文文档才真正适合项目中使用因为中文文档可能没有同步官网最新文档。比如中文文档版本是5.x,但官网最新版文档是7.x,api已不支持回调,改为Promise,若使用了…

mysql入门:ddl,dml,dql,dcl语句基本操作介绍

mysql入门 数据库相关概念介绍什么是数据库sql语句简介sql语句分类: ddl语句:ddl:数据库 库的创建查找:ddl:数据库查询数据库创建ddl:数据库删除 ddl:数据库 表 的操作ddl表操作:查询ddl 表操作——创建mysql数据类型d…

数据库管理工具【dbForge Tools for Oracle】更新!赶快来看~

Devart 提供包括Oracle、SQL Server、MySQL、PostgreSQL、InterBase以及Firebird在内的专业数据库远程管理软件,dbForge Studio for MySQL是一个在Windows平台被广泛使用的MySQL客户端,它能够使MySQL开发人员和管理人员在一个方便的环境中与他人一起完成…

SpringBoot——整合MyBatis

前情回顾: 在开始介绍SpringBoot整合MyBatis之前,我们先来复习一下在Spring中整合MyBaits是如何来做的。其中的核心思想是将MyBatis中的SqlSession对象交给Spring去管理,并且Spring提供了一个Maper接口扫描器对象去完成为Mapper接口创建动态…

Java 中常见的加密算法,DES、3DES、AES、RSA

加密算法是一种将数据转换为不可读形式的算法,以保护数据的机密性和完整性。加密算法被广泛应用于计算机网络、数据库、电子商务等领域,用于保护敏感数据的安全性,如用户密码、信用卡信息、医疗记录等。在 Java 中,有许多常见的加…

【GigaGAN论文总结】Scaling up GANs for Text-to-Image Synthesis

【GigaGAN论文总结】Scaling up GANs for Text-to-Image Synthesis 1、论点2、贡献3、方法概览Sample-adaptive kernel selectionInterleaving attention with convolutionGenerator designDiscriminator designMulti-scale input, multi-scale output adversarial lossMatchin…

高性能ADC/DAC FMC子卡推出-FMC164

FMC164 子卡集成 4 通道 1Gsps 采样率,16 位 高性能ADC采样,板载4 通道1.25Gsps 16 位DA。板载时钟芯片 HMC7044,可以提供 JESD204B所需要的各种时钟。具有同步/触发功能,模拟信号采用 SSMC 射频连接器输入和输出。板载时钟芯片为…

ant-design实现树的穿梭框,穿梭后右侧是已选树(二)

根据上一篇目标一,进一步实现树的穿梭框 主要内容: 基于ant-design树的穿梭框,实现穿梭后右侧是已选树,(当前antd右侧只有一个层级) 理想的树的穿梭框: 左边是完整的树,右边是已选的树&#x…

Java面试知识点(全)- DB mysql面试知识点

[Java面试知识点(全) 导航: https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 SQL优化 r m y s q l q u e r y ( " S E L E C T u s e r n a m e F R O M u s e r W H E R E s i g n u p d a t e > ′ r mysql_query(…

美国原油CFD价格波动受到哪些因素影响?

经过多年的发展,石油技术已经从煤炭转向原油作为主要能源,这种商品用于各种产品,包括汽油、塑料、药品等。因此,它的价值很高,美国原油CFD价格变动时全世界都在关注。对于交易者来说,美国原油CFD价格波动性…

从零开始Vue3+Element Plus的后台管理系统(五)——尝试多种图标ICON方案iconify

iconfont是过去使用较多的图标方案,后来更倾向于使用SVG,因为SVG更灵活兼容性更好。在最近的几个Vue2项目中,因为强调功能弱化设计所以直接用Element UI自带的图标即可满足需求。 Element Plus的图标库相对Element UI更加丰富,然…

flac格式如何转mp3?这几种方法快收藏起来吧

将FLAC格式转换为MP3格式,可以使用一些转换工具,如优速音频处理器等,也可以使用其他专业音频转换软件。FLAC是一种无损音频编码格式,通常用于保留原始音频质量,但相应的文件大小较大。而MP3是一种有损压缩音频编码格式…

MFC类继承实现CEdit自绘文字颜色,边框,背景色

效果 新建一个继承于CEdit的类CMyEdit 在他的窗体OnNcPaint函数中实现绘制边框,它所响应的消息是WM_NCPAINT void CMyEdit::OnNcPaint() {// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CEdit::OnNcPaint()////执行默认的窗体处理过程Default();

linux环境安装使用FastDFS,FastDHT详解

01-简介 GitHub:happyfish100 (YuQing) GitHub FastDFS高性能的分布式文件系统,主要功能包含文件的存储、同步、访问(上传和下载),特别适用于以文件为主体的网络站点(图片分享和视频分享)。 Fa…

2023年Java面试正确姿势(1000+面试题附答案解析)

前言 2023 跳槽不迷茫,大家可以先收藏再看,后续跳槽都能用上的! 一键获取最新java文档。 Java程序员绝大部分工作的时间都是增删改查,很多人觉得这项工作没什么技术含量,任何一件事情都要站在不同的角度去考虑&#xf…