
1.5 掷骰子
教学目标:认识变量。
变量是一个有名字的容器,用于装载不同类型的数据。
1.创建的时候,分为适用于所有角色(全局变量)和仅适用于当前角色(私有变量)。一般情况下使用默认的全局变量即可,在本书4.5节中会详细讲解私有变量。见图1。

图1
2.对变量进行命名,做到见名知义。(与广播一样)
3.变量可以储存不同类型的数据。但Scratch是一门弱数据类型的语言,换言之,它根本没有明确的数据类型。将变量设定为0,既可以是数字0,也可以是字符串“0”。
4.变量被创建后,是一个圆形的积木。这种圆形的积木,在Scratch中有很多。它们的作用都用来装载数据,所以只要用鼠标点击一下,就能将数据弹出来。见图2。

图2
开发需求001:
Devin和Dee在派对上玩掷骰子游戏(背景为Party)。Devin的骰子是白色的,Dee的骰子是蓝色的。按下空格键,Devin先掷,Dee后掷,骰子的点数均随机产生,为了真实一些,骰子的造型要变化几次再停下。每一次掷完骰子,Devin和Dee都会切换一个造型,并说出各自骰子的点数1秒。见图1.5.1。

图1.5.1
骰子(tóu zi),北方的很多的地区又叫色子(shǎi zi)。它是一颗正立方体,每个面分别是1~6点,其相对两面之数字和为7。相传,骰子的发明人是三国时代的文学家曹植,最初用做占卜的工具,后来才演变成游戏。
分析:
本题有四个角色,应注意先后顺序。按下空格键后,骰子1先产生随机点数,Devin说出点数,然后骰子2产生随机点数,最后Dee说出点数。每一步的衔接,应当通过广播来实现。
具体步骤:
1.准备素材。

竞赛中,选手们在与时间赛跑,故用什么方法绘制角色以提高效率就非常重要。下面介绍绘制骰子的最佳方法:
(1)矩形功能,黑色轮廓,白色填充,按住Shift键绘制出正方形,注意中心点,如图1.5.2所示。

图1.5.2
在Scratch 3.9版本中,强化了中心点的设置,使中心点变得可见,使用起来更加方便,如图1.5.3所示。

图1.5.3
(2)复制该造型。不管是1点,还是6点,它们的轮廓都是一样的,如图1.5.4所示。

图1.5.4
(3)至于点数,用画笔点点即可。把画笔调粗一些,这样一定比绘制实心圆要快,如图1.5.5所示。

图1.5.5
(4)完成骰子1,复制一个骰子2,并为其填充蓝色,如图1.5.6所示。

图1.5.6
2.按下空格键,骰子1先动。
如何让角色切换随机造型呢?见下图。

关于随机取数:
两边都是整数,则取整数。
两边至少有一个小数,取出来的就是小数。
换成小数造型,会四舍五入。
换成0造型,会切换为最后一个造型。
提示:在Scratch中,六边形积木代表布尔型数据类型,它只有两个值,True和False,对应数字1和0。



这种将布尔型数据相加的方式,通常在解决逻辑推理问题的时候会用到。
由于产生的点数,一会要让Devin角色说出来,此处需要创建一个变量“n1”,用来储存骰子1的点数。储存的目的是为了随时调用。再发出广播“报数1”。程序见下图。

3.Devin角色接收到广播后,就把点数说出来,然后继续向下一个角色传递消息。程序见下图(左)。
4.骰子2开始。程序见下图(中)。
5.Dee角色。程序见下图(右)。

开发需求002:
在程序001的基础上添加一个裁判角色。在Devin和Dee的比赛中,判断胜负并说出结果。
分析:
接着程序001继续编程,要解决在哪进行判断以及怎么进行判断?
具体步骤:
1.准备素材。

2.解决在哪里进行判断。
Devin和Dee一前一后掷骰子,应该在最后掷骰子的Dee角色说完点数后开始裁判。程序见下图。

3.解决如何判断。
当小猫裁判接收到广播,说明两人的骰子都已掷完,此时可以裁判了!
在编程中分支结构表示判断。在使用分支结构的时候,要先进行分析,并找到一共有几种可能产生的结果。本题应有3种结果:平局、Dee胜、Devin胜,分别如图1.5.7、图1.5.8、图1.5.9所示。

图1.5.7

图1.5.8

图1.5.9
方法一:使用单分支结构“如果……那么……”对变量“n1”和“n2”进行比较。程序见下图(左)。
这种方法比较直观,也很好理解,按顺序依次比较就行了。
方法二:使用分支嵌套结构进行判断。程序见下图(右)。

方法虽然有两种,但建议使用方法二。尽管分支嵌套结构从表面上看,方法二只是省去了一个判断条件,但在实际应用中,这种方法可不仅仅是省一个条件那么简单,1.8节会进行细致分析。
试一试:
玩家和电脑玩石头剪子布的游戏。点击左右箭头,可以实现相应切换玩家手型的效果。选好要出的手型后,点击手型角色,电脑开始随机出拳。由胜利的一方说“我赢了!”1秒,并将胜者的得分增加1。平局的时候,双方同时说“平局!”1秒,均不加分。游戏为三战两胜制,率先拿到2分者,获得最终胜利,并由胜利者说出“太好了,我取得了最终的胜利!”2秒。见图1.5.10及图中文字所示。

图1.5.10