在本课中,我们将学习事件和事件处理程序,它们是计算机科学中的重要概念,可以在所有编程语言中找到。我们将从一个有趣的不插电活动开始,该活动演示了因果关系,以及事件如何在现实世界中触发动作。接下来,我们将在Minecraft中动手使用MakeCode,最后,我们将挑战您创建自己的MakeCode项目,这些项目使用事件来激活程序的不同部分。
|事件|| |-|-| |行动开始下雨|人们打开雨伞| |钟声响起|学生| |上课电源按钮已按下|计算机打开| |单击鼠标按钮|应用程序将打开|
你能想到一些其他事件以及它们可能导致什么发生吗?
在编程中,事件处理程序是程序的一部分,在发生特定事件时运行(它“处理”事件)。在 MakeCode 中,事件处理程序块看起来像一个中间有间隙的正方形,通常以单词“on”开头:

对于“事件”学生,让每个学生想出一个事件来建模。学生应该发明自己的事件,但一些例子可以是:
当“事件处理程序”学生收到他们分配的事件时,每个学生都应该根据他们的事件提出某种要执行的操作。学生应该发明自己的行为,但一些例子可以是:
调用完所有事件和事件处理程序后,您可以随机调用不同的“Event”学生来执行,并触发不同的事件处理程序 - 您可以加快速度并查看学生是否对其分配的事件做出快速反应。
在网上搜索有关著名发明家和艺术家Rube Goldberg的更多信息,他创造了古怪而复杂的机器来执行简单的任务。
向全班同学解释,今天他们将计划一台过于复杂的机器。播放一些视频,让学生了解那是什么。
解释你正在谈论这个,因为它将帮助学生了解编码中的事件。当编码中发生事件时,代码会做出反应并执行程序员请求的效果。例如,当某人点击互联网上的链接时,他们可能会被发送到一个网页(您可以按照您的描述显示它)。您可以使用本课程中某个活动中的一些示例代码来显示事件及其结果效果。
生活中也会发生一些事件。当您翻转电灯开关时,指示灯会亮起或熄灭。你可以提供更多现实生活中的例子,让学生真正理解这个概念。下面的复杂机器设计示例只有5个步骤。我们将希望制造具有10个或更多事件的机器。
过于复杂的机器是一系列事件。该课程将提出一个包含10个事件的过于复杂的机器。最后,机器将完成最终目标。
作为一门课,集思广益,完成一些常见的家务,解释你们一起思考你想要机器做什么。运行这台机器的最终目标是什么?
一些家务劳动的例子可能是洗碗,扫地或倒垃圾。或者,您可以寻找Rube Goldberg启发的想法竞赛。
这里有无限的可能性,但每个小组都应该以他们的机器要完成的目标来结束头脑风暴会议。
接下来,告诉学生他们必须使用至少10种不同的设备才能让他们的机器实现他们的目标。十是一个可调整的数字。添加或减去设备以使活动更长或更短。
最后,重申您希望学生在开始编码时使用的语言非常重要。尽可能使用“事件”这个词,让他们熟悉这个词和编码中的概念。代码侦听事件,然后执行程序员编程到其中的操作。
课程结构
- 概述:事件
- 不插电的活动 1:事件和处理程序
- 不插电的活动2:过于复杂的机器
- 我的世界活动1:黄砖路
- 我的世界活动2:唱一首六便士之歌
- 我的世界活动3:阿拉莫的最后一站
- 我的世界活动4:链接墙
- 项目:响应事件
- 评估:评分量规
- 标准:上市
课程计划
事件
计算机科学中的事件是由计算机检测到的操作或事件。例如,当有人单击鼠标上的按钮时,它会为计算机生成“鼠标单击事件”。在现实生活中,还有一些事件可能与行动有关,例如因果关系。以下是一些示例:|事件|| |-|-| |行动开始下雨|人们打开雨伞| |钟声响起|学生| |上课电源按钮已按下|计算机打开| |单击鼠标按钮|应用程序将打开|
你能想到一些其他事件以及它们可能导致什么发生吗?
在编程中,事件处理程序是程序的一部分,在发生特定事件时运行(它“处理”事件)。在 MakeCode 中,事件处理程序块看起来像一个中间有间隙的正方形,通常以单词“on”开头:

JavaScript:
脚本
player.onTravelled(TravelMethod.Walk, function () {
})
blocks.onBlockPlaced(GRASS, function () {
})
mobs.onMobKilled(CHICKEN, function () {
})
player.onChat("jump", function () {
})
Python:
def on_travelled_walk():
pass
player.on_travelled(WALK, on_travelled_walk)
def on_block_placed_grass():
pass
blocks.on_block_placed(GRASS, on_block_placed_grass)
def on_mob_killed_chicken():
pass
mobs.on_mob_killed(CHICKEN, on_mob_killed_chicken)
def on_on_chat():
pass
player.on_chat("jump", on_on_chat)
不插电的活动:事件和处理程序
教师须知
拔出的活动是远离计算机的活动 - 换句话说,从设备“拔出”。本课程以有趣的方式介绍新概念,让孩子们站起来并移动,经常在玩游戏或完成挑战时与其他学生面对面地做出反应和互动。不插电的活动允许孩子们远离计算机练习概念,这样当他们转移到计算机上的活动时,他们已经走过并自己思考了这些概念。
目的
通过执行事件和事件处理程序封装的结果操作来加强事件驱动的编程模型。概述
将类的三分之一标识为“事件”,将类的其余部分标识为“事件处理程序”。对于“事件”学生,让每个学生想出一个事件来建模。学生应该发明自己的事件,但一些例子可以是:
- 门打开
- 灯熄灭
- 双手拍手两次
- 双手举起
当“事件处理程序”学生收到他们分配的事件时,每个学生都应该根据他们的事件提出某种要执行的操作。学生应该发明自己的行为,但一些例子可以是:
- 开门 –> 走到外面
- 指示灯熄灭 – > 进入睡眠状态
- 双手拍手两次 – >踩脚三次
- 双手举起 - >说“触地!
调用完所有事件和事件处理程序后,您可以随机调用不同的“Event”学生来执行,并触发不同的事件处理程序 - 您可以加快速度并查看学生是否对其分配的事件做出快速反应。
材料
- 索引卡
- 钢笔或铅笔
规则
- 除非另有指示,否则学生在本次活动中不得说话或发出噪音,除非这是其活动或行动的一部分。
- 学生应该意识到课堂上其他人的活动,但不能告诉其他学生该做什么。
思考
讨论一下这种感觉/工作原理:- 系统中是否存在任何编程错误或错误?学生是否错过了处理事件?
- 跟踪正在进行的不同事件是什么感觉?
- 有时,给定事件有多个事件处理程序...这是如何工作的?
- 是否可以为多个事件提供一个事件处理程序?(是的)
- 事件处理程序是否也会触发事件?(是的)如果是这样,那将如何运作?(灯熄灭 – >入睡 – >老师说:“醒醒!)
不插电的活动:过于复杂的机器
过于复杂的机器由几个设备组成,这些设备链接在一起以复杂的方式执行简单的操作。在本课中,可以将每个设备视为一个事件。一个事件或设备将导致下一个事件发生。因此,这些事件是链接或链接在一起的。在网上搜索有关著名发明家和艺术家Rube Goldberg的更多信息,他创造了古怪而复杂的机器来执行简单的任务。
向全班同学解释,今天他们将计划一台过于复杂的机器。播放一些视频,让学生了解那是什么。
解释你正在谈论这个,因为它将帮助学生了解编码中的事件。当编码中发生事件时,代码会做出反应并执行程序员请求的效果。例如,当某人点击互联网上的链接时,他们可能会被发送到一个网页(您可以按照您的描述显示它)。您可以使用本课程中某个活动中的一些示例代码来显示事件及其结果效果。
生活中也会发生一些事件。当您翻转电灯开关时,指示灯会亮起或熄灭。你可以提供更多现实生活中的例子,让学生真正理解这个概念。下面的复杂机器设计示例只有5个步骤。我们将希望制造具有10个或更多事件的机器。

过于复杂的机器是一系列事件。该课程将提出一个包含10个事件的过于复杂的机器。最后,机器将完成最终目标。
作为一门课,集思广益,完成一些常见的家务,解释你们一起思考你想要机器做什么。运行这台机器的最终目标是什么?
一些家务劳动的例子可能是洗碗,扫地或倒垃圾。或者,您可以寻找Rube Goldberg启发的想法竞赛。
这里有无限的可能性,但每个小组都应该以他们的机器要完成的目标来结束头脑风暴会议。
接下来,告诉学生他们必须使用至少10种不同的设备才能让他们的机器实现他们的目标。十是一个可调整的数字。添加或减去设备以使活动更长或更短。
演讲创意
您可以通过多种方式让学生展示他们的作品。结合使用这些想法中的任何一个或所有这些想法,让您的团队展示他们的最终想法。- 学生使用漫画书风格的盒子,其中每个盒子显示一个设备与下一个设备交互。
- 学生创建书面步骤。
- 学生们表演他们的最后一台机器。
- 虽然这是很多工作,但你可以带一些东西给学生做一个真正的机器。
最后,重申您希望学生在开始编码时使用的语言非常重要。尽可能使用“事件”这个词,让他们熟悉这个词和编码中的概念。代码侦听事件,然后执行程序员编程到其中的操作。