小学生计算机编程题,真题|小学组倒数第二道编程题,做不出来罚你点赞三遍!...

原标题:真题|小学组倒数第二道编程题,做不出来罚你点赞三遍!

十年前,当我们还是小学生的时候,碰到电脑你们都会干什么?

是熟练地在网址栏输入www.4399.com,然后一个接一个的点开网页小游戏,还是玩玩电脑自带的蜘蛛纸牌、扫雷、弹珠。但无论是哪个,我想肯定都不会是编程。

57e33451c27020835ac91a5b19954df4.png

当然,这是我们的时代,跟现在的小学生肯定不同,跟新一代优秀的小学生们相比,我们英语被虐、游戏被虐、化妆被虐,现在居然连编程这样高深且专业化的净土也被新新势力入侵。啊!还我的极乐净土。

c963ec2eb5595fe5e849569e067cbf33.png

看到这里,我知道,很多同学的内心其实并没有即将被后浪掀翻的恐惧,我们的内心充满着:who care!与其担忧十年后的前景,不如先把眼前的事做好,比如现在就想满足自己的好奇心,看看到底小学生的水平,编程到底能怎么考?

这就满足你!第八届蓝桥杯大赛少儿赛创意编程EV3组真题奉上!这可是倒数第二题呦!

看题!(怕你不会做,小蓝还贴心准备了题解哦

fd55bc306ee165753013da6f5d94d7e3.png

)

0d15f76cca374bb4729c4915c83c3075.png

在EV3主机屏幕上,以坐标(5,5)处为圆心画出半径为5的实心小球,并以“每0.05秒钟移动一次,每次移动时小球位置的X坐标+3,Y坐标+4”的初始方式开始在屏幕中持续运动;当小球运动到屏幕的上、下、左和右边缘时,小球产生碰壁反弹,并同时播放音效“Click”(播放音效不影响小球运动)。

运动方向碰壁反弹示例如下,示意图1为碰到下边缘及碰到右边缘的反弹。

d90d0a9577ad80a3712d15a2a9a1424b.png

图1 碰壁反弹示意

这道题的难度系数是6,也就是中偏难的题目。需要用到的知识包括变量、屏幕坐标系等等。

我们可以把解题过程分为两个步骤。第一阶段先显示一个会斜着移动的小球,第二阶段再让它实现反弹,达到题目的所有要求。

第一阶段,我们要先显示一个小球并让它在一个方向上动起来。流程图如图2:

ed61bdeb20a9cc84cfb47784e5d273e5.png

图2 流程图

第一个步骤,“定义变量,增加循环”。在程序一开始定义数字变量x作为小球的横坐标,y作为小球的纵坐标,将它们的初始值都设为5。然后在它们后面添加一个无限循环,如图3所示。

1c9d82a4bafe4605deaf8644573f31dc.png

图3 x、y变量与无限循环

第二个步骤,“以坐标(x,y)为圆心画出小球”。在循环中加入变量模块和显示模块来显示一个半径为5的小球。显示模块应将清除屏幕选项设置为“真”,以确保清除了之前图案的残像,如图4所示。

2b2d63984502237321d693ba6988c96f.png

图4 显示出小球

第三个步骤,“让小球动起来”。小球移动每次将y坐标加4,x坐标加3。坐标计算的程序见图5,把这段程序放到循环内已有模块的后面。

4d132a8a725acb21672eb277bd155413.png

图5 改变小球坐标

第四个步骤,“等待0.05秒”。在循环内最后,再添加一个0.05秒的等待模块。这个模块太重要了,重要到没有它,你就看不出来小球在屏幕上存在过。

到现在,第一阶段就完成了。不会反弹的小球虽然很快就会跑到屏幕外面去,但是我们已经可以看出小球的移动轨迹了。

第二阶段,我们让小球可以碰壁反弹。碰壁反弹的规律是:入射角=反射角。

4c40147b19c31fe7f659cb3ffafbb1db.png

图6 入射角与反射角

小球的斜向运动可以“拆”成一个横向速度和一个纵向速度。第一次与屏幕边缘的碰撞发生在下边缘,就如图6所示。在下边缘的反弹过程中,横向速度没有改变,而纵向速度变得和原先相反了。在其他边缘的碰撞同理。而小球圆心位置距离屏幕边缘小于5个像素点时,就说明小球已经碰上屏幕边缘了,需要改变运动方向。碰撞反弹的实现流程图如图7所示:

7f51675823f2c1ea55a5531697ccb6d9.png

图7 碰撞部分流程图

第一个步骤,“增加速度变量”。我们增加变量“xspeed”存储横向速度数值,增加变量“yspeed”存储纵向速度数值,并在程序开始时定义及赋予初始速度值,如图8。

8376a59e59729c079f17a892b326e3a4.png

图8 创建速度变量

第二个步骤,“修改小球移动的坐标计算过程”。将图5中的程序修改为如图9的程序。

b2068ec13446a03cfa41a5b587f31bcc.png

图9 修改后的坐标计算过程

第三个步骤,“实现屏幕下边缘碰壁反弹的效果”。先解决下边缘碰撞的逻辑,如果小球的圆心y坐标大于123,则把yspeed改为“-4”,程序如图10所示。把这些模块放到坐标计算模块的后边,小球就有了屏幕底边反弹功能了。

7951e8cdd9c056dd13f3b4dab13bdc37.png

图10 通过组合比较模块与切换模块设定更加复杂的条件

第四个步骤,“实现另外三个边缘的碰壁反弹效果”。增加三个同样格式的切换用于判断在另外三个方向上的反弹。表1可以帮助你编写这些反弹用程序:

比较的变量

反弹条件1

反弹条件2

x

≥173

≤5

y

≥123

≤5

表1 碰撞反弹数据表

加入一个声音模块,并在声音文件“LEGO声音文件”—“系统”中选中“Click”声音,然后把播放类型改为“1”播放一次,修改完成的碰撞反弹部分如图11。

f77fa811f2cfc9405d7a4b05634f5f5a.png

图11 加上播放声音的碰撞反弹

到现在为止我们已经完成了题目要求的所有内容,将它下载之后试一下吧!

在完成题目要求之后运行程序,屏幕上不断反弹并发出声音的是不是就像是一个木箱里的小球一样?

程序看起来简单,可是多题考核、现场编程,对小选手们可是个不小的考验呢!

相比其它中小学机器人和编程竞赛,蓝桥杯少儿组更注重公正性和严肃性,杜绝了教师代做方案、跟随团队蹭奖等现象,让那些个人能力出众、逻辑思维清晰和编程创意丰富的小朋友更容易脱颖而出。

蓝桥杯大赛少儿组决赛5月26日在北京大学举办,教师培训5月7-8日进行。长按下图关注少儿组客服微信,咨询赛事详情。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值