Skip to the content.

第10讲 收发消息:角色之间的沟通和协调

一、 知识点

(1) 角色之间的沟通和协调

很多场景里面需要多个角色一起工作。比如小朋友们常玩的“谁在哪里干 什么”游戏,这个游戏中需要有三个角色,第一个角色说“谁”,第二个角色 说“在哪里”,第三个角色说“干什么”。

多个角色一起工作的时候,就需要沟通和协调,否则就会出错。还是拿这 个游戏作为例子,第二个角色要听第一个角色说完之后才能说话,第三个角色 要听第二个角色说完之后才能说话。不然七嘴八舌,游戏可就没法玩儿了。

那么在 Scratch 里,角色怎样实现“听”这个功能呢? Scratch 里面有个 “消息”机制,就是当第一个角色说完话之后,就广播一个“该第二个角色说 了”的消息;第二个角色一旦“听”到这个消息,就开始说话。第三个角色也 是进行类似的处理。

(2) 什么是“消息”?

角色之间相互沟通时,需要传递一些话,传递的这些话就是消息。

(3) 怎样创建消息?

打开 Scratch 软件,点击最左侧的“事件”,然后找到“广播消息 1”和“广播消息 1 并等待”这两个积木,它们就是用来给所有角色发送消息的。

如果我们直接使用这两个积木的话,发送的消息是“消息 1”。不过用这个 “消息 1”表达不清楚我们想要说的话,很多时候我们想把消息说得更明确一点儿。 这时,我们点击“消息 1”旁边那个下三角形按钮,就会看到图 10-1 所示的界面。

图10-1

图 10-1 创建新消息的过程

我们再点击“新消息”,就能创建一个含义更清楚的消息了。比如我给第 一个角色创建了消息“该第二个角色说话了”。

……

其他详细内容请参见书的第10讲。

二、动手练

实验: “谁在哪里干什么”游戏

实验目的:

实现“谁在那里干什么”游戏,即:第一个人随便想一个主语,比如 “一个金枪鱼罐头”;第二个人随便想一个地点,比如“在总统府里”;第三个人想一个动作,比如“饿得发昏”。三个人依次说出来,就组成了完整的一句话“一个金枪鱼罐头在总统府里饿得发昏”。

基本思路:

第一个人先想好十几个主语,放到一个列表里;想说的时候,从里面随机挑选一个出来。第二个人和第三个人类似。

第一个人说完之后发消息,第二个人收到消息之后才说话;第二个人说完之后发消息,第三个人收到消息之后才说话。

我们设置3个角色,分别是Abby、Avery和Elf。Abby负责说“谁”;Avery负责说“在哪里”;Elf负责说“干什么”。

我们玩儿了好几轮游戏,有一次这个程序说出了“一只蜗牛在大草原上跪地向天求饶”(图10-5),哈哈哈,笑死我了!

图10-2

图10-2 第一个角色Abby说“谁”的脚本

图10-3

图10-3 第二个角色Avery说“在哪里”的脚本

图10-4

图10-4 第三个角色Elf说“干什么”的脚本

图10-5

图10-5 “谁在哪里干什么”程序的运行结果示例

代码下载及Web版

点击谁在哪里干什么的代码下载于本地运行,或点击谁在哪里干什么游戏Web版直接运行

国内用户如果无法访问scratch.mit.edu的话,请点击国内可访问的Web版直接运行

三、教师点评

消息是计算机中非常重要的协调和同步机制。

孩子们平时就很喜欢玩“谁在哪里干什么”这个游戏,现在通过编程实现这个游戏,理解了如何利用消息在角色间进行协调;将来把角色替换成进程、把消息替换成更复杂的结构、把广播换成定向发送,就比较容易理解了。  

返回上级