课件自评:
知识基础:
滑行、说话、点击事件、普通广播
故事背景:
学校里正在举行一年一度的运动会。同学们都非常踊跃地参加了各种运动项目,有短路、长跑、接力跑、跳绳、投篮、跳高等……小熊报了一项他最喜欢的百米短跑比赛。跟小熊一起参加百米赛跑的还有小狗和甲壳虫。企鹅宝宝是这次赛跑比赛的发令员兼裁判员。
作品效果要求:
单击企鹅,它就发出“比赛开始”的指令,小熊、小狗、甲壳虫开始朝终点线跑去。当所有的比赛选手都到达终点线时,企鹅宣布“比赛结束”。
课堂教学流程:
这是我们拿到的空白程序:小熊、小狗、甲壳虫是运动员,企鹅是裁判。它们的位置都用代码放好了。终点线也做成了一个角色,它的位置也OK了。
单击企鹅时,宣布“比赛开始”,三位选手起跑。最后一位到达终点线时,企鹅宣布“比赛结束”。
在这个过程中,我们单击企鹅,怎么才能让三位选手一齐起跑呢?
(请同学们先回答这个问题后继续后面的内容)
要让三位选手听到“比赛开始”时一齐起跑,需要用到哪一个编程概念呢?
A. 循环
B. 广播
C. 条件
上节课我们已经学过了“广播”。这里我们需要让企鹅发令,其他几个角色同时执行动作,正好可以用上“广播”——它可以让一个角色向其他角色(或背景)发送消息。
其他几个角色收到这个消息时,纷纷开始朝右运动(滑行)就可以了。
这里大家先回答老师一个问题:
(请同学们先回答这个问题后继续后面的内容)
要让每位选手都朝右边的终点线角色运动,用哪个代码块更好?
A. 在……秒内滑行到……
B. 在……秒内滑行到x:……y:……
这个问题,老师其实是考一考大家,对终点线这个角色位置的掌握。它的位置其实只用一个点的坐标来表示,在我们的代码里就是x:220, y: 0。
如果大家选用A,让每位选手都滑行到“终点线”这个角色的话,那么大家都会朝x:220, y:0这个点出发了,最终就会挤成一团。
所以,得用另一个,B在……秒内滑行到x:……y:……。
有没有同学知道,这里的x和y分别应该填什么呢?
(提问回答)
非常好!大家已经发现了,每位选手向右直着跑,不能偏,那么它们的y坐标值是不能变的,只把x坐标改为终点线的x坐标值就可以了。
我们从“侦测”里找到这个“舞台的背景编号”,把它改为“终点线的x坐标”,拖到滑行的代码块x坐标处。
再从“运动”里找到“y坐标”,表示选手自己的y坐标,拖到滑行的代码块y坐标处就可以了。
请大家一起完成现在的代码吧!作品的要求里,并没有说哪个角色跑得快哪个慢,所以我们可以自己确定一下时间。比如,小狗用1秒,小熊用2秒,甲壳虫用3秒。
(练习时间)
好,大家已经运行了一下。小狗、小熊、甲壳虫先后到达了终点线。
但是真正的比赛,不可能谁的速度慢快谁的速度慢,我们能提前猜出来,不然就不叫比赛了对不对?
因此这里我们最好给每一位选手一个随机的速度。
现在还差最后一个功能:怎么让企鹅在最后一位选手冲过终点线时,宣布“比赛结束”呢?先请同学们思考一下,举手回答。
(提问回答)
有同学说可以用“广播”,每位选手到达终点时发出一个广播。也有同学说可以用“重复执行+如果”来判断。
大家都很善于思考。
如果用“广播”,每位选手到达终点时发出一个广播,说XXX到了,那企鹅怎么决定什么时候收到了全部三个广播呢?
用“重复执行+如果”也是一样,三个选手都到达终点的条件是什么呢?
这些办法都非常复杂,同学们可以试试。
其实今天我们用一个新的“广播”就可以非常简单地实现这个功能,那就是“广播……并等待”。
这个“广播……并等待”与单纯的“广播”有什么区别呢?
它们的区别就在于,“广播……并等待”也会像“广播”一样向其他角色发出消息,但是它会把这串代码往下执行的整个过程暂停,当所有“当接收到……”同一个消息的角色中的代码,都执行完成后,“广播……并等待”下面的代码块才会继续执行。
完成后的代码块是这样的:
通过这种方法,就可以得到作品的效果了。
(提问回答)
大家一起改一下吧。
今天的课程到这里就结束了,同学们下次课再见!
知识技巧总结:
-
掌握广播并等待的应用
-
复习广播、坐标的用法
课后思考与练习:
请同学们在程序中添加一个新的参赛选手小猫,其他要求不变,看看代码有什么变化。
研发思路:
紧紧围绕“广播……并等待”与“广播”的不同点,需要创建一个情景,使得有一个角色发令,多个角色执行,发令角色还需要等待执行的角色完成动作后,再做一件事情。
综合这些要求,选取了同学们比较熟悉的百米赛跑这一例子。用这个例子引入“广播……并等待”还是挺自然的,也让同学们不知不觉间理解了同步与异步的概念。
与非学堂公众号2021年5月5日首发。
让编程变得简单、简单、更简单!
— OVER —
与非学堂
专注青少年信息技术教育,探讨少儿编程的教与学,交流技巧、分享资源
与非学堂小程序
蓝桥杯STEMA科技素养测试、Bebras测试、文化测试
公众号对话框回复「HELP」更多精彩
喜欢就请「分享」「点赞」「在看」吧!