# 第8课 喵喵运动会

马上举办校园运动会了，小狗“小白”和“小蓝”都名参加跑步比赛，“喵喵”将是这个项目的裁判。

在本课的范例作品中，单击“喵喵”角色，“小白”和“小蓝”开始向舞台右侧方向奔跑。当遇到终点线时，停止前进，同时由“喵喵”宣布它们到达终点的消息。

![](/files/-LWon2qwusdK-AZz6k0r)

## 创意构思

可以使用Scratch中的“广播”功能来完成本课任务：单击“喵喵”后，由“喵喵”广播“起跑”消息，运动员角色在收到消息后起跑，并在到达终点线时广播“到达”的消息。

在运动员是否到达终点线的判断上，可以使用Scratch中的颜色触碰检测方法进行判别。此外，还可以使用随机数指令随机产生运动员的移动速度，从而使比赛更精彩。

要完成本课的创意构思，需要了解以下的新指令：

### Scratch中的广播

在Scratch中，“广播”是非常重要的一个功能。每个广播都有“消息名称”，Scratch通过消息名称来区别不同的广播。Scratch的舞台和角色都能够发送广播，每个广播发送后，能被所有对象（包括广播的发送者）接收。

比如下图中的“喵喵”、“小白”和“小蓝”三个角色，如果已经编写了当“小白”和“小蓝”接收到“起跑”的消息后，开始向终点线方向移动的脚本。那么当“喵喵”广播“起跑”消息后，所有角色，包括“喵喵”自己，都会收到这条消息；其中“小白”和“小蓝”由于事先编写了相应的脚本，因此会向终点线移动。

![](/files/-LWon2r-js-eCecTWP-Q)

[单击此处](http://haohaodada.com/video/a20801.php)或者扫描下方二维码可以观看以上内容相关的视频。

![](/files/-LWon2r2Re__bwz5TvBF)

1\.

![](/files/-LWon2raLhuzpq8N9gCW)

属于“事件”类别指令，通过指令广播一条消息；单击下拉列表参数，可以选择需要广播的消息名称；单击其中的“新消息”选项，可以在打开的对话框中新建消息名称。

2\.

![](/files/-LWon2r64G_dnRLyXnck)

属于“事件”类别指令，当接收到指定消息后，能够触发指令，执行指令下方的脚本；单击下拉列表参数，可以选择触发指令的具体消息名称。

3\.

![](/files/-LWon2r8rjC_xx_GfLp0)

属于“侦测”类别指令，用于侦测角色是否碰到指定颜色；单击指令的颜色参数，当鼠标指针变成

![](/files/-LWon2rA0gmvJfG2-QSe)

时，移动鼠标在需要的颜色上单击，指令中的颜色参数会变成指定的颜色。

4\.

![](/files/-LWon2rCY82lED19-8cs)

属于“控制”类别指令，Scratch循环指令中的一种；在满足条件之前，重复执行指令中所包含的脚本；指令中的参数就是停止的条件。

## 脚本设计

### 第一步：绘制赛道

本课范例中的舞台背景图片是一条赛道，上面有起跑线和终点线。其中，终点线的颜色还将被用作角色是否到达终点的判断条件。可以在“背景”选项卡中绘制这条赛道：

1.单击“背景列表区”中的缩略图，再单击进入“背景”选项卡；然后单击右下角的

![](/files/-LWon3DV1oVp7wGM7FvC)

按钮，进入“矢量模式”。

2.单击选中“矢量工具按钮”中的

![](/files/-LWon2rGPIx4Ag2uLrwb)

按钮，再单击选中“颜色”区域的

![](/files/-LWon2rI8jQL0WiY46YE)

及“填充模式”中的

![](/files/-LWon2rK2Rnsk_WOjr9L)

最后在“背景编辑区”拖动鼠标，画出红色矩形赛道。

3.单击选中“矢量工具按钮”中的

![](/files/-LWon2rMS5NYr9iM1c99)

按钮，再选中“颜色”区域的

![](/files/-LWon2rONvJEtB4UdRP0)

设置合适的线宽，最后按住键盘上的“Shift”键，在“背景编辑区”赛道的左边拖动鼠标，画出一条蓝色线条，作为起跑线。

4.重新选择颜色为

![](/files/-LWon2rQ9pDYDRNlF1l4)

还是按住键盘上的“Shift”键，在赛道的右边拖动鼠标，画出一条黄色线条，作为终点线。

[单击此处](http://haohaodada.com/video/a20802.php)或者扫描下方二维码可以观看以上内容相关的视频。

![](/files/-LWon2rS7A408GsT4ygt)

### 第二步：准备角色

本课范例作品中的三个角色，除了默认的小猫以外，另外两个“Dog1”和“Dog2”角色可以从Scratch的“角色库”选取，再把这三个角色重命名为“喵喵”、“小白”和“小蓝”，然后调整三个角色的大小，把它们拖放到合适的位置。

[单击此处](http://haohaodada.com/video/a20803.php)或者扫描上方的二维码可以观看以上内容相关的视频。

![](/files/-LWon2rUq1SeZIVQWE-f)

### 第三步：喵喵发令

首先为小猫“喵喵”编写脚本，使它能够向两个运动员广播“起跑”消息：

1.单击选中小猫“喵喵”角色，将“事件”类别中的

![](/files/-LWon3Hk4O54SPQ62sn6)

指令拖动到脚本区，然后再将

![](/files/-LWon2raLhuzpq8N9gCW)

指令拖动到脚本区与前一个指令组合。

2.单击

![](/files/-LWon2raLhuzpq8N9gCW)

指令的下拉列表参数，选中“新消息”选项，在打开的“新消息”对话框中输入消息名称为“起跑”。

[单击此处](http://haohaodada.com/video/a20804.php)或者扫描上方的二维码可以观看以上内容相关的视频。

![](/files/-LWon2rcWiK6ThLhgcVE)

### 第四步：运动员响应消息

两只小狗运动员接收到“喵喵”广播的“起跑”消息后，应该开始向舞台右侧的终点线移动，并在碰到终点线时停止前进。具体可以按以下步骤操作：

1.为了让

![](/files/-LWon2r8rjC_xx_GfLp0)

指令能够对“是否碰到了终点线”这个条件进行检测，需要将指令中的颜色参数设置成与终点线颜色相同：先单击指令中的颜色参数，然后将鼠标移动到终点线上单击，这样，指令的参数颜色就与终点线相同。

2.还可以使用

![](/files/-LWon39Dow9E-pQh-IgX)

指令，让“小白”每次比赛都拥有不同的速度。

“小白”完整的脚本如下图所示：

![](/files/-LWon2rjuIRVwM-BHk1a)

“小蓝”的脚本与“小白”相同，可以采用复制粘贴的方法编写。

[单击此处](http://haohaodada.com/video/a20805.php)或者扫描下方二维码可以观看以上内容相关的视频。

![](/files/-LWon2rlymMGEKEgxkH5)

#### 试一试

在“侦测”类别中，与

![](/files/-LWon2r8rjC_xx_GfLp0)

指令功能类似的还有

![](/files/-LWon2rp2vXTUrg49ZJ1)

![](/files/-LWon2rrOxj_18iIJgAy)

这两个，你知道这两个指令起什么作用吗？

[单击此处](http://haohaodada.com/video/a20806.php)或者扫描下方二维码可以观看相关视频。

![](/files/-LWon2rtccxssDldDpqm)

### 第五步：到达终点发消息

当“小白”和“小蓝”在到达终点后，应该分别发送到达终点的消息。这样，才能让“喵喵”知道谁到达终点：

1.单击选中“小白”，将“事件”类别中的

![](/files/-LWon2raLhuzpq8N9gCW)

指令拖动组合到脚本区，作为最后一条指令；再单击指令的下拉列表参数，选中“新消息”选项，在打开的“新消息”对话框中输入消息名称为“小白到达终点”。

2.再单击选中“小蓝”，按照以上的步骤添加指令，并设置指令的参数为“小蓝到达终点”。

小猫“喵喵”接收到来自“小白”和“小蓝”发送的消息后，可以按以下步骤操作，宣布相应的到达信息：

1.单击选中小猫“喵喵”，将“事件”类别中的

![](/files/-LWon2r64G_dnRLyXnck)

指令拖动到脚本区，在下拉列表参数中选择“小白到达终点”。

2.将“外观”类别中的

![](/files/-LWoQiE3Lpd1Qpfb36OE)

指令拖动组合到上一条指令下方，修改指令的第一个参数为“小白已经到达终点”。这样，当“喵喵”接收到“小白到达终点”这个消息的时候，会宣布“小白已经到达终点”。

3.复制这段脚本，修改第一个指令的参数为“小蓝到达终点”，第二个指令的第一个参数为“小蓝已经到达终点”。这样，“喵喵”会宣布“小蓝已经到达终点”。

[单击此处](http://haohaodada.com/video/a20807.php)或者扫描下方二维码可以观看以上内容相关的视频。

![](/files/-LWon2rzGODk59tyLQzp)

#### 练一练

按照以上步骤所编写的程序脚本，运动员到达终点以后，“喵喵”只会宣布运动员到达的消息。你能够编写程序，让“喵喵”还能够根据比赛情况，宣布运动员的比赛成绩吗？

[单击此处](http://haohaodada.com/video/a20808.php)或者扫描下方二维码可以观看以上内容相关的视频。

![](/files/-LWon2s0RzWZUbm5FjMV)

## 拓展思考

校园运动会结束了，“喵喵”还不满意，你能编写程序，让比赛更精彩吗？


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.haohaodada.cn/zai-xian-ru-men-ke-cheng/scratch-primer/lesson-8.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
