贪吃蛇-第12届蓝桥杯Scratch选拔赛真题精选

news2024/11/24 22:29:43

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

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

第12届蓝桥杯青少年组第5次选拔赛于2021年1月23日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

贪吃蛇,本题是2021年1月23日举行的第12届蓝桥杯Scratch选拔赛真题编程第5题,初级组和中级组都有此题,题目要求编程创作贪吃蛇游戏,玩家通过控制蛇头方向吃到食物,从而使得蛇身变得越来越长。

先来看看题目的要求吧。

一.题目说明

编程实现:

贪吃蛇游戏:通过控制蛇头方向吃到食物,从而使得蛇身变得越来越长。

具体要求:

1). 点击绿旗,舞台上出现面向右侧的蛇头,和随机位置格子里的苹果;

2). 通过上下左右四个方向键,控制蛇头的上下左右移动;

3). 蛇头碰到舞台边缘后,可以从另一侧的位置出来;

4). 每次吃掉苹果(蛇头和苹果在同一格子内,苹果即消失),蛇头后增加一个正方形身体,同时苹果重新出现在随机位置格子内;

5). 吃掉6次苹果,游戏结束。

二.思路分析

本题一共有3个角色,分别是苹果、蛇头和蛇身,如图所示:

贪吃蛇是一款非常经典的小游戏,常规的实现方式就是使用列表来保存蛇头和蛇身的坐标,再利用列表操作(出栈和入栈)实现蛇的移动。

在Scratch编程中,我们还有更简单的方式,这就是克隆。其基本思想是,蛇头每前进一步,就在刚才的蛇头位置克隆一节蛇身,同时删除最末端的蛇身,如图:

为了对比,上图中画了两条蛇,其中下方的蛇是向右前进一步后的状态,注意,y轴方向上并没有真正的移动。

我们只需要移动蛇头,蛇身不用移动,只需不停的克隆和删除即可,难点在于如何删除最后一节蛇身,咱又不知道哪一个克隆体是最后一节蛇身。

其实,这里有一个非常简单的方法,假设贪吃蛇每隔1秒前进一步,当只有蛇头,即蛇身长度为0的时候,蛇身克隆后立刻删除,当蛇身长度为1的时候,蛇身克隆后等待1秒后删除,当蛇身长度为2的时候,蛇身克隆等待2秒后删除......,依此类推,也就是说,蛇身克隆体存在的时间和蛇身长度一一对应。

看到这里,你可以稍停一下,仔细想想这个过程,如果觉得不好理解的话,可以试着画图帮助自己消化理解。

三.编程实现

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

  • 苹果随机位置

  • 蛇头的移动

  • 贪吃蛇吃到苹果

  • 克隆蛇身

1. 苹果随机位置

一提到随机位置,很多同学立刻会想到”移到随机位置“指令,但是要注意在本作品中,舞台被分成16 x 12的矩阵(水平方向上有16个小格子,垂直方向上有12个小格子),苹果要放到每个格子中才行。

换一个思路,水平方向上有16个位置可选,垂直方向上有12个位置可选,每个格子的大小为30,根据舞台坐标分布,我们编写代码如下:

舞台在x轴方向上的坐标范围为-240到240,所以这里将苹果x的取值范围设置为-7到8,y轴方向坐标范围为-18-到180,因此y的取值范围设置为-5到6。

如果直接用”苹果x * 30“和”苹果y*30“,则苹果的位置如下:

这跟角色造型有关,我们需要在这个基础上再移动半个格子的距离,所以x和y都相应的减去15。

2. 蛇头的移动

蛇头角色,可以出现在任意一个格子中,每隔一个固定时间,就前进一步,默认情况下,向右前进,按下↑、↓、←、→方向键,蛇头就会改变方向,如果碰到舞台边缘后,可以从另一侧的位置出来。

为了方便,我们定义一个变量,将其命名为”间隔时间“,这样就可以随时改变贪吃蛇移动的速度,对应的编写代码如下:

代码比较简单,需要注意的是确定好碰到边缘时的边界条件。

现在贪吃蛇只能向右移动,玩家通过按下方向键改变蛇的移动方向,对应的代码如下:

这样一来,就可以改变蛇的运动方向了。

3. 贪吃蛇吃到苹果

当贪吃蛇碰到苹果时,就吃掉苹果,重新出现一个苹果,蛇身增加一节。

首先要创建好变量”蛇身长度“,将初始值设为0,然后判断蛇是否碰到苹果,如果碰到,则将蛇身长度增加1,同时需要判断蛇身长度是否等于6,如果等于则结束游戏,否则就重新出现一个苹果。

这部分代码可以写在苹果角色中,也可以写在蛇头角色中,很显然,写在苹果角色中更简单一些,切换到苹果角色,增加代码如下:

注意,这是一段新的代码,只不过和步骤1中的代码有相同的部分,如果你想简化的话,可以考虑使用自制积木或者广播消息,这里就不再列出了。

4. 克隆蛇身

最后就是克隆蛇身了,根据思路分析中的描述,在每次蛇头移动之前克隆蛇身即可,其位置就是蛇头所处位置。

比较好的做法是在蛇头角色中克隆蛇身,因此,还需要创建两个变量用于记录克隆体的位置,定义两个变量,分别命名为”蛇身x“和”蛇身y“,然后在蛇头移动之前进行克隆。

切换到蛇头角色中,增加代码如下:

只有3行代码,非常简单,注意添加代码的位置。

再切换到蛇身角色,编写代码如下:

至此,整个作品就创作好了,你可以运行程序,好好欣赏一下自己的大作了。

四.总结与思考

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

  • Scratch舞台坐标系;

  • 运动编程,重点是精确控制角色位置;

  • 随机数的使用;

  • 按键事件编程,这里主要是上下左右方向键;

  • 克隆的灵活运用,重点是理解克隆体的特性;

  • 循环和条件的嵌套编程。

本题难度较大,重点是理解贪吃蛇的实现原理,这要求考生具备较强的分析能力,对贪吃蛇移动的过程进行分解,然后寻找蛇身的规律,再结合Scratch编程知识,找到最简单的解决方案。

实际上,我们的游戏还有不少小bug,比如可以直接调转蛇头,如果多玩几次,还会出现这种情况,当吃掉一个苹果时,苹果出现的位置和贪吃蛇重合了。针对这些小bug,你知道如何解决吗,考验你的时候到了,赶紧试试吧。

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

需要素材和源码的,可以联系本人,或者移步至同名wx号。

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

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

相关文章

通信基石Socket结合OOP实现程序间的通信

学习目录前言一.Socket是用来干什么的二.如何用代码建立通信连接三.Java实现TCP发收消息四.UDP的Socket编程前言 先分享一下最近看到的几篇面经: 看了一下关于Socket的知识点好像面试十分高频,它作为通信的基石许多组件,框架都是在他的基础…

oracle数据库id字段自增长

mysql数据库中建表的时候可以设置id字段自增长,oracle数据库中要实现id字段自增长需要借助于sequence(序列)和trigger(触发器)。 下面通过一个简单的示范说明。 --1.新建一个账户表 account create table accout( …

机械转码日记【25】多态

目录 前言 1.多态的概念 2. 多态的定义及实现 2.1多态的构成条件 2.2 虚函数 2.3虚函数的重写 2.4虚函数重写的两个例外 2.4 C11 override 和 final 2.5 重载、覆盖(重写)、隐藏(重定义)的对比 3.抽象类 3.1概念 3.2 接口继承和实现继承 4.多态的原理 4.1虚函…

个人微信api

我们是一家专业服务企业数字化微信管理服务的技术服务团队,服务于需求SCRM、机器人、营销系统、社群小助手等具有研发能力的企业,同时我们也接收因使用Xp方案、ipad方案、PC方案导致被批量封号的企业,我们合作伙伴目前包含:金融服务行业Top10…

无协同资源创新打法,这几个品牌在双11「品牌嘉年华」实现品效双收

抖音双11好物节圆满收官,每年双11,我们关注的不仅仅是不断刷新的成绩,也是在更多元的场景、更丰厚的资源和更强劲的平台资源助力之下,商家在营销动作上带来了怎样的“惊喜”。 在「内容场景」,双11期间,抖…

VScode设置pretty-printer无效

文章目录VScode设置pretty-printer无效问题解决尝试正式解决参考VScode设置pretty-printer无效 问题 win10系统下,VScode中即使在launch.json中进行了如下设置,还是无效 {"description": "为 gdb 启用整齐打印","text"…

【设计模式】 - 结构型模式 - 外观模式

目录标题前言外观模式概述结构实现:智能家电控制优缺点前言 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚…

基于机器学习的自动音乐生成播放器

目录 详细设计说明书 1 1 引言 1 1.1 编写目的 1 1.2 背景 1 2. 此项目的任务提出者:西电软件工程课程组、西电软件开发小组 1 1.3 定义 2 1.4 参考资料 2 3 程序描述 4 3.1 011 参数调整模块 4 3.1.3 界面设计 4 3.1.4 参数调整的内部逻辑 5 3.2 012 自动谱曲模块 …

webpack 的基本使用(详解)

前言: 你是否也是只会运用框架中集成好的Webpack配置呢?你明白每一项的意义么?你懂多少Webpack的个性化配置项呢?本篇文章为你讲解Webpack中的各种配置项参数及作用! 目录前言:一,什么是Webpack…

【算法手札】深入理解宽度遍历(bfs)和深度遍历(dfs)搜索

算法的重要性不言而喻,现在我们的生活也已经离不开各种算法,一个好的算法能大大提高程序的运行效率,是学习编程的一个重要模块,而遍历算法也是算法里的一个大的模块,今天我们一起来学习一下深度遍历算法(de…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java电子书店管理系统ya226

做毕业设计一定要选好题目。毕设想简单,其实很简单。这里给几点建议: 1:首先,学会收集整理,年年专业都一样,岁岁毕业人不同。很多人在做毕业设计的时候,都犯了一个错误,那就是不借鉴…

双功能接头试剂知识分享:Alkyne maleimide,Mal-Alkyne,炔烃-马来酰亚胺

炔烃马来酰亚胺是一种双功能接头试剂,可将末端炔烃连接到各种含硫醇分子,例如含有半胱氨酸残基的蛋白质。然后可以通过铜催化的点击化学反应将炔烃部分与各种叠氮化物缀合。 Alkyne maleimide is a bifunctional connector reagent that can connect ter…

AB Test实验设计

1. 版本设计 实验版本的设计要遵循变量的单一性,不能一下子改变多个因素,如同一个按钮不能同时改变按钮颜色和按钮文字,实验设计越简单越容易得出正确的结论。 案例时间: 2. 实验时长 业界的实验时长一般是2-3周,最…

Packet Tracer - 在 OSPFv2 中传播默认路由

地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 R1 G0/0 172.16.1.1 255.255.255.0 不适用 S0/0/0 172.16.3.1 255.255.255.252 不适用 S0/0/1 192.168.10.5 255.255.255.252 不适用 R2 G0/0 172.16.2.1 255.255.255.0 不适用 S0/0/0 172.16.3.2 …

Redis对象及redisObject源码解析

写在前面 以下内容是基于Redis 6.2.6 版本整理总结 一、对象 前面几篇文章,我们介绍了Redis用到的主要的数据结构,如:sds、list、dict、ziplist、skiplist、inset等。 但是,Redis并没有直接使用这些数据结构来实现key-value数…

使用k8s创建一个支持ssh的pod,docker

在容器场景下 用ssh去登录一个docker 是不提倡的 可是有时为了方便定位问题 我制作了一个支持ssh的镜像 节约大家的时间 docker使用方法: docker run --namec7-sshd --privileged -itd -p 1022:22 lnwaycool/centos7_ssh:v1 /usr/sbin/init ssh root127.0.0.1 -p 1022 登…

猴子也能学会的jQuery第七期——jQuery动画(上)

📚系列文章—目录🔥 猴子也能学会的jQuery第一期——什么是jQuery 猴子也能学会的jQuery第二期——引用jQuery 猴子也能学会的jQuery第三期——使用jQuery 猴子也能学会的jQuery第四期——jQuery选择器大全 猴子也能学会的jQuery第五期——jQuery样式操作…

外部H5页面打开微信小程序最新流程

当前时间2022年11月22日,记录一下外部H5如何打开指定微信小程序的指定页面最新流程。 因为微信小程序后台已关闭生成 小程序 scheme 码 入口,所以只能通过如下方式: 1.服务端获取微信小程序 scheme 码 前提条件:目前仅针对国内…

基于中国新能源汽车税收政策下成都市场发展路线研究

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1选题背景及意义 1 1.2国内外新能源汽车税收政策现状 2 1.2.1国内新能源汽车税收政策 2 1.2.2国外新能源汽车税收政策 3 1.3本课题研究主要内容 4 第二章 新能源汽车市场发展现状及存在的问题 5 2.1市场发展现状 5 2.2存在的问题 5 …

TensorFlow之文本分类算法-2

1 前言 2 收集数据 3 探索数据 4 选择模型 5 准备数据 数据被输入模型之前,需要将数据转换成模型能理解的格式,该过程被称之为数据标准化。 首先,已收集到的数据样本可能是以指定的顺序存储,而在实际分析中,期望…