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

第10届蓝桥杯青少年组国赛于2019年5月25日举行,形式为线下考试,考生自带电脑。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

逃不掉的小球,本题是第10届蓝桥杯Scratch国赛真题编程第1题,题目要求考生编程实现使用键盘控制小球在圆形范围内运动,同时确保小球不能越过圆形边缘。

先来看看题目的要求吧。

一.题目说明

准备工作:

添加1个“Ball”小球角色,绘制1个轮廓较粗的红色空心圆。

编程实现:

键盘控制小球运动,小球不能越过圆形边缘。

具体要求:

1). 圆形和小球都放置在舞台中间(如图);

2). 点击绿旗,使用上、下、左、右按键可以控制小球上下左右移动,但在程序未运行时,按下按键则应该不能控制小球移动;

3). 小球只能在其圆形范围内移动(允许触碰到边缘,但不能越过边缘);

4). 当按下空格键时,小球要回到舞台中间,圆形则必须在初始大小的基础上随机变大或者变小;

评判标准:

  • 10分:符合具体要求1),即导入的小球和绘制的圆圈在舞台中间;

  • 20分:在10分基础上,符合具体要求2),即不点击绿旗,不能用键盘控制小球;点击绿旗,可以控制小球;

  • 40分:在20分基础上,符合具体要求3),即小球只能在圆圈内运动;

  • 50分:在40分基础上,符合具体要求4),即按下空格键,圆圈的大小可以随机变大变小。

二.思路分析

本题的逻辑很简单,无非就是在按下键盘方向键的时候,让小球上下左右移动,具体来说,就是当按下←键的时候,小球向左移动,当按下→键的时候,小球向右移动,当按下↑键的时候,小球向上移动,当按下↓键的时候,小球向下移动。

针对这个需求,只需要设置好角色的方向,重复执行移动即可。但是题目给出了一些限制,重点有两个:

1). 在程序未启动时,按键不能控制小球移动,这就表示我们不能使用事件模块中的“当按下空格键”指令,而应该使用侦测模块中的“按下空格键”指令。

2). 小球只能在圆球范围移动,所以当小球碰到边缘时,应该让小球反弹回来,如何实现反弹,这是有技巧的,稍后会详细解释。

三.编程实现

根据思路分析,我们可以分角色来编写程序:

  • 圆形角色

  • 小球角色

1. 圆形角色

绿旗点击时,圆形角色处于舞台中心位置,默认大小为100。当按下空格键时,圆圈的大小可以随机变大变小,其代码如下:

需要说明的是,在Scratch中设置角色的大小,单位是百分比,100就是指和角色本身的造型大小完全一致。

2. 小球角色

当点击绿旗时,小球位于舞台中心,根据上面的思路分析,本题不能使用事件模块中的“当按下空格键”指令,所以,我们需要重复检测是否按下方向键。

按指定方向移动小球非常简单,重点是如何让小球在碰到圆形边缘时反弹回来。通常有两种方法,第一种方法是将小球角色设置为反方向,移动相同的步数,第二种方法则可以直接在移动步数的基础上,添加一个负号“-”,表示回退,也就是向反方向运动。

很显然,方法2更为简单,这里以按下↑键为例,编写代码如下:

需要注意的是,这里的移动步数不宜过大,如果过大的话,就直接越过圆形边缘了,同时在碰到边缘反弹时,移动的步数和原来移动的步数数值相同。

其它三个按键的处理方式,和这个基本一样,唯一不同的是方向,按下↓键时,将方向设置为180度,按下←键时,将方向设置为-90度,按下→键时,将方向设置为90度,代码如图所示:

在上述代码中,每个“如果...那么”指令中都包含了“如果碰到边缘,就移动-5步”的判断,有些同学觉得这个代码重复了4次,于是将这个代码拿出来,放到最后,如图所示:

这样代码不是更简洁吗?思路上是没有什么问题的,如果你多测试几次,会发现有bug,当同时按下多个方向键的时候,小球就跨越圆圈了。

这是怎么回事呢?其原因其实很简单,假如你同时按下↑和→键,根据这个代码,会先判断是否按下了↑键,于是向上移动了5步,接着又判断是否按下→键,于是向左移动了5步,但是最后只执行了一次后退5步,这就导致小球可能跨过圆圈。

当按下空格键时,小球会回到舞台中心,编写代码如下:

至此,整个作品就创作好了,是时候好好欣赏一下自己的大作了^_^。

四.总结与思考

作为国赛的第一题,相对来说不难,总代码量为40个积木块,涉及到的知识点主要包括:

  • 舞台中心坐标及“移到x,y”指令的使用;

  • 角色大小的含义及设置;

  • 按键侦测及角色碰撞检测;

  • 角色方向的设置;

  • 循环和条件的嵌套用法;

  • 移动10步指令的含义及负数的妙用。

题目不难,但是要做到完全符合题目并不是一件轻松的事情,这需要考生具备较好的编程基础,认真审题,在完成创作后,要反复测试,看是否有bug并进行修复完善。

所以说,编程竞赛从来不只是考察编程知识,真正脱颖而出的考生都具备较强的综合能力和素养。

需要作品素材和源码的,可以联系本人。

逃不掉的小球-第10届蓝桥杯Scratch国赛真题第1题相关推荐

  1. 捉迷藏之二-第10届蓝桥杯Scratch国赛真题第6题程序2

    本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第15 ...

  2. 捉迷藏之四-第10届蓝桥杯Scratch国赛真题第6题程序4

    本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第17 ...

  3. 捉迷藏之一-第10届蓝桥杯Scratch国赛真题第6题程序1

    本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第14 ...

  4. 小猫打螃蟹-第10届蓝桥杯Scratch省赛真题第2题

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第67讲. 第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试.Scrat ...

  5. 击鼓游戏-第10届蓝桥杯Scratch省赛真题第7题

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第62讲. 第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试.Scrat ...

  6. 自动驾驶-第10届蓝桥杯Scratch省赛真题第5题

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第64讲. 第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试.Scrat ...

  7. 女孩顶球-第10届蓝桥杯Scratch省赛真题第1题

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第68讲. 第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试.Scrat ...

  8. 计算游泳时间-第10届蓝桥杯Scratch省赛真题第3题

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第66讲. 第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试.Scrat ...

  9. 跑酷游戏-第13届蓝桥杯Scratch国赛真题第3题

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第27讲. 第13届蓝桥杯青少年组国赛于2022年5月29日举行,形式为在线考试.Scrat ...

最新文章

  1. Win10命令行激活 电脑组装
  2. 来看看如何在 C# 中使用反射
  3. 三大新闻机构起诉FBI,FBI与苹果大战续集开幕?
  4. 自监督学习简介以及在三大领域中现状
  5. Android Socket编程
  6. 1.19 String、StringBuffer和StringBuilder类的区别
  7. linux下调试工具的应用
  8. 【UML关系(泛化、实现、依赖、关联(聚合,组合))】
  9. linux控制协程参数,Linux高性能网络:协程系列05-协程实现之原语操作
  10. vfp mysql教程_VFP基础教程 5.5 编辑框控件(editbox)
  11. 数字通信原理笔记(一)---概述
  12. 硬盘 : ATA、ATAPI的含义
  13. Vue开发环境搭建,Vue.js安装,浏览器辅助工具Vue-devtools
  14. Typora、Markdown 字体样式
  15. web和mysql连接并增删改查_Web界面实现数据库增删改查过程
  16. 如何利用linux分析转录组数据库,对转录组测序数据进行分析以及注释
  17. CleanMyMac X试用版与正式版区别
  18. unity 之 Particle 二
  19. Axure RP9制作汉堡菜单
  20. 再次出现用户净流失,大失颜面的中国移动推出超低价套餐争取用户

热门文章

  1. 函数指针和指针函数以及数组指针和指针数组区别
  2. 安卓设备接入GB28181(Android GB28181)
  3. sqlserver服务器未指定错误的解决
  4. Shopee安全团队(新加坡)安全运营/漏洞研究岗位开放招聘
  5. C语言实现Flybird
  6. Unity 之 ToLua框架中UI.Dropdown组件动态添加Options
  7. java 弱智语言_一个很弱智的问题
  8. 基于SSM的医院门诊预约挂号系统的设计与实现(文末附源码、论文)
  9. 深度学习入门python知识总结
  10. Marshal用法汇总