10 Scratch中使用链表——小猫“抓抓”百科问答

  1. 创设故事情景

小猫“抓抓”来到城堡一个神秘房间门口,遇到了守门的石猴。必须正确回答石猴提出的各种问题,才能进入这个房间。

 

单击此处,在线试玩本课的在线范例,看看小猫“抓抓”在神秘房间门口遇到的石猴会问它哪些问题。

 

单击此处,打开本课的空白练习作品项目页,再单击右上角的“转到设计页”按钮,转到“作品设计页”。在作品设计页添加如上图所示的舞台背景及角色。同时设置这些角色的位置、大小等初始化代码如果觉得有困难,可以单击此处或者扫描右边的二维码,了解详细的操作步骤。

 

 

  1. 认识并创建变量

在计算机编程语言中,“变量”用来储存程序的各种数据;在需要引用的时候,通过“变量名”访问“变量”获取数据。要创建变量,可以按以下步骤操作,也可以单击此处或者扫描右边的二维码,详细了解具体的操作步骤。:

  1. 单击选项卡中的“数据”类别,在“数据”类别中,可以新建“变量”、“链表”。

  1. 单击 按钮,在打开的“新建变量”对话框中输入变量的名称;默认该变量适用于所有角色,也就是所有角色都能够使用。最后单击“确定”按钮完成变量的创建。

Scratch中的变量名称可以使用中文、字母、数字及符号,最好使用具有描述性的、有一定意义的名称。特别需要注意的是,Scratch中的变量名称是区分字母大小写的。例如对于“max”、“MAX”、“Max”这三个变量来说,是不同的变量。因此为了避免混淆,在同一个程序中不要使用这种只有大小写区别的变量;建议最好使用中文,虽然创建的时候需要输入中文麻烦点,但更形象直观。

变量创建完成后,新建的变量会显示在“数据”类别中,同时会增四个与变量有关的指令。

 

在作品练习设计页中创建“成绩”和“题号”这两个变量。其中“成绩”这个变量用于储存游戏的成绩;“题号”这个变量用于累计游戏运行过程中当前所回答问题的序号。

 

 

  1. 设置变量的初始化值

与设置角色的大小、位置一样,变量在程序一开始运行时,也需要进行数值的初始化,这样可以避免前一次程序运行所留存数值对变量的影响。

变量初始化脚本中最常用的是“数据”类别中的 这三条指令。可以单击此处或者扫描右边的二维码,详细了解相关的知识和操作步骤。

 

根据你的经验,以上这三个指令分别有什么作用?把你的想法填写到学习手册 上。

 

先想一想:“成绩”变量“题号”变量初始化应该如何设置,然后在作品练习设计页中编写脚本试一试,最后把你的初始化设置方法填写到学习手册上。

 

 

  1. 认识并创建链表

“链表”是可以存放多个数据的容器可以把它想象为一排顺序摆放的盒子,每个盒子里都可以存放一个数据。

与“变量”相比,一个“链表”可以存放很多个数据,各个数据按顺序保存在链表中;而一个“变量”只能存放一个数据,新的数据存放到一个原来存有数据的变量里以后,原有的数据会被替代。

与“变量”类似,也可以在“数据”类别中,创建和使用各种链表。可以单击此处或者扫描右边的二维码,详细了解相关的知识和操作步骤。

 

在作品练习设计页中创建“题目”和“答案”这两个链表。其中“题目”这个链表用于保存石猴问小猫的问题;“答案”这个链表用于保存这些问题相对应的答案。

 

 

  1. 添加链表中的数据

Scratch中,可以通过舞台上显示的链表编辑窗口,添加链表中的数据。

如果链表中需要输入的数据比较多,可以用鼠标拖动链表编辑窗口右下角,改变窗口大小,再输入数据内容可以单击此处或者扫描右边的二维码,详细了解相关的知识和操作步骤。

 

  1. 你想让石猴问小猫“抓抓”什么问题?试着在自己所创建的链表中分别输入这些问题的题目和答案。然后把这些题目和答案填写到学习手册上。
  2. 如果这些链表一直显示在舞台上,会严重影响程序的运行。你有什么办法让它们隐藏?先在作品练习设计页中试一试,然后把你的方法填写到学习手册上。

 

 

  1. 根据链表依次显示题目

要读取保存在链表中的题目,可以使用“数据”类别中的 指令。这个指令的第一个参数用于指定所读取的数据位于链表的第几项,由于要依次显示题目,因此可以把前面定义好的变量 拖放到这个参数框里;第二个参数是选择所读取链表的名称,可以单击下拉列表选择前面定义好的“题目”链表。最后组合为:

“侦测”类别中的 指令可以显示参数框中的信息,然后暂停程序运行、等待用户输入。要显示从链表中读取的题目,可以将以上两个指令组合为

由于要依次显示链表中的题目,因此可以使用“控制”类别中的 指令,再把“数据”类别中的 拖放到参数框中,使重复执行的次数就是“题目”链表的长度。可以单击此处或者扫描右边的二维码,详细了解相关的操作步骤。

 

  1. 判断回答是否正确

小猫的回答,可以使用类似“如果正确,那么……;否则……”这种句式来判断。在“控制”类别中, 指令能够完成这种判断可以单击此处或者扫描右边的二维码,详细了解相关的知识和操作步骤。

这个指令的参数,就是判断的条件。也就是比较输入的内容和保存在“答案”链表中的数据是否相同,可以将 以及 的组合 拖放到 指令中,组合成 ,作为判断的条件。如果条件符合,也就是回答正确,会执行指令中的第一段脚本,比如:;如果回答错误,会执行指令中的第二段脚本,比如:

 

根据以上的描述,在作品练习设计页中,尝试编写脚本依次显示题目、判断小猫的回答是否正确。

 

 

  1. 增加积分系统

一般游戏中都有积分系统,也就是累计成绩,判断、显示游戏最终的成绩。

要想累计成绩,可以使用“数据”类别中的 指令。如果回答正确,可以增加“成绩”变量的值,比如增加“10”分;如果回答错误,就增加“成绩”变量的值为负数,比如增加“-10”,也就是减少10分。可以单击此处或者扫描右边的二维码,详细了解相关的知识和操作步骤。

 

 

在练习作品设计页中搭建并执行如图所示的代码,你发现了什么?你能够完善脚本,使程序运行正常吗?先试一试,然后把你的方法填写到学习手册上。

如果觉得有一定困难,也可以单击此处或者扫描右边的二维码,了解具体的操作步骤。

 

 

游戏结束之前,还需要根据游戏中累计的成绩,显示最终的成绩,判断是否完成游戏。可以单击此处或者扫描右边的二维码,详细了解相关的知识和操作步骤。

 

在下图所示的这段代码中,如果增加了题目,还需要手工修改判断条件中完成游戏所需要的成绩。能不能自动的设置这个成绩条件值?

 

 

  1. 除了范例中的百科问题,你还可以设置其它更多、更有趣的题目吗?
  2. 范例中的问题是按在链表中的顺序依次出现,你能够利用随机函数,随机从链表中出题吗?