## 第 10 课  喵喵出题目
---

<br>

班级即将举行口算竞赛,为此 “喵喵” 想要制作一个口算训练程序给大家练习,我们一起来帮助它吧!

在本课的范例作品中,我们需要制作一个能够随机出题、自动批改的加法口算训练程序。

<div align=center><img width ='600' src="img/10-1.png"/></div>

<br>

### 创意构思

本课的范例作品是一个加法口算训练程序,先随机出题,然后等待用户输入答案,再判断输入的答案是否正确。

要完成本课的创意构思,需要了解以下的新积木:

<br>


![](block/8-1.png)  

属于`数据`类别工具按钮,单击这个按钮后,可以通过打开的`新建变量`对话框创建变量。

创建变量以后,在`积木区`的`数据`类别中,会增加一些用于控制变量的积木,同时在舞台的左上角默认会显示变量对象。该变量对象左边是变量名,右边是变量当前的值。

<a href="http://haohaodada.com/video/a21001.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

##### 试一试

双击舞台中的变量对象,你发现了什么??

<a href="http://haohaodada.com/video/a21002.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

![](block/8-3.png) 

属于`数据`类别积木,为一个变量赋值;由第一个下拉列表参数确定需要赋值的变量,第二个参数确定这个变量具体设定的值。

![](block/8-2.png) 

属于`数据`类别积木,每次新建一个变量,都会增加相应变量的积木。通过该积木,可以获取变量当前的值。

<br>

#### Scratch 中的变量

在 Scratch 中,`变量`是另一个非常重要的概念,可以新建变量、对变量赋值,在程序的运行过程中可以根据需要随时修改变量的值。

一个变量包括`变量名`与`变量值`两个属性:

* `变量名`用于在脚本中识别不同的变量,可以使用中文作为变量名称,变量名应该有一定意义;

* `变量值`是指变量所包含的值。比如创建一个名为`加数1`的变量,可以通过 ![](img/10-3.png) 指令来设置它的变量值,也可以使用 ![](img/10-3b.png) 指令来获取它的变量值。

<a href="http://haohaodada.com/video/a21003.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

##### 想一想

下列表格中的字符,在 Scratch 中都可以作为新建变量名。但有些作为变量名不太合适,容易混淆。请在你认为最合适的变量名下方的表格中打 “**√**”。

<div align=center><img src="img/10-2.png"/></div>

<a href="http://haohaodada.com/video/a21004.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

![](block/7-6.png)、![](block/7-7.png)、![](block/7-8.png) 

属于`数字和逻辑关系`类别积木,分别用于比较积木左边的参数与右边的参数之间是否存在相等、小于或大于的关系。

<br>

![](block/6-5.png) 

属于`侦测`类别积木,能够显示提示文本并等待用户通过键盘输入,指令的参数就是显示的提示文本内容。

执行该指令会暂停程序执行,然后在舞台下文显示文本输入框,等待用户输入。输入完成后直接回车或者单击文本框右侧的 ![](icon/1-7-2.png) 按钮完成输入。

<br>

##### 试一试

分别将该指令放置在角色脚本中与舞台背景脚本中运行程序,你发现了什么?

<a href="http://haohaodada.com/video/a21005.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

![](block/6-6.png) 

属于`侦测`类别积木,与 ![](block/6-5.png) 积木配合使用,用户键盘输入的内容保存于该积木中。

<br>

### 脚本设计

#### 第一步:准备角色和背景

1. 从背景库中选择 “chalkboard” 作为舞台背景图片;

2. 将角色 “Cat1” 重命名为 “喵喵”,然后摆放到舞台合适的位置;

3. 单击“角色列表区”的 ![](icon/2-1-3.png) 按钮,在角色造型编辑窗口中绘制一个加号,并将该角色重命名为“加号”,将这个加号摆放到黑板的中央。

<a href="http://haohaodada.com/video/a21006.php" target="_blank">单击此处</a>可以观看相关的视频。

#### 第二步:口算出题

本课范例中的口算是由两个加数组成的加法口算,可以按以下步骤出题(<a href="http://haohaodada.com/video/a21007.php" target="_blank">单击此处</a>可以观看相关的视频):

1. 在`代码`选项卡中,单击`变量`类别下的 ![img](block/8-1.png) 按钮;在打开的`新建变量`对话框中输入变量名`加数1`。

2. 重复以上步骤,再新建变量`加数2`。

3. 将舞台中的 <img src="img/10-4a.png" width = 112> 、<img src="img/10-4b.png" width = 112> 标记设置成<img src = "img/10-4c.png" height = 30>样式后分别摆放到加号的两侧。

4. 单击舞台背景缩略图,添加如下图所示的变量初始化积木块:

<div align=center><img src="img/10-5.png" width =230 /></div>

<br>

##### 试一试

把 <img src="img/10-6a.png" height = 30> 积木和 <img src="img/10-6b.png" height = 30> 积木中的第二个参数修改成不同的数字后再运行程序,你发现了什么?

如果将 <img src="img/10-6c.png" height = 30> 指令分别拖动到以上两个指令的第二个参数位置上再运行程序,你又发现了什么?

<a href="http://haohaodada.com/video/a21008.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

#### 第三步:输入口算答案

口算题目产生并且显示以后,程序应该能够接受用户的键盘输入。要实现这个功能,可以将以下脚本添加到“喵喵”的角色积木块中:

<div align=center><img src="img/10-7.png" width = 230/></div>

<a href="http://haohaodada.com/video/a21009.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

##### 试一试

在积木区勾选 ![img](block/6-6.png) 积木前的 ![img](img/10-7a.png) ,然后运行上图所示的脚本,在文本输入区中输入答案。观察舞台区并把你的发现记录下来。

<a href="http://haohaodada.com/video/a21010.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

#### 第四步:判断答案是否正确

口算答案输入后,需要马上判断是否正确,也就是将`加数1`与`加数2`相加的结果与输入的答案进行比较,如果相等说明输入正确,否则就是输入错误。可以将以下脚本添加到 “喵喵” 的角色积木块的 <img src="img/10-8b.png" height = 40> 积木后:

<div align=center><img src="img/10-8.png" width = 300/></div>

<a href="http://haohaodada.com/video/a21011.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

##### 想一想

现在的口算练习程序每运行一次只能练习一道口算题,如果想要练习多道题目,应该如何修改脚本?

<a href="http://haohaodada.com/video/a21012.php" target="_blank">单击此处</a>可以观看相关的视频。

<br>

### 拓展思考

在 “喵喵” 制作的口算软件帮助下,大家的口算成绩突飞猛进。不过 “喵喵” 觉得这个口算软件还不够完美,发挥你的想象,用学过的知识让口算软件更完美吧!

<br>

### 相关链接

* [目录](readme.md)
* 上一课:[第 9 课 喵喵学画画](09.md)