初级篇——猜骰子
【疑惑篇】
点击绿旗按钮,开始摇骰盅,同时播放摇动的声音。请玩家猜里面的骰子是几点(1-6),判断玩具是否猜对,说明结果。
骰盅、骰子和声音可以通过搜索引擎搜索下载,或者自己画出来。
想一想: 如何将猜数字改为猜大小(1-3为小,4-6为大)。
【线索篇】
案例分析
它们发生的场景是什么?
默认的白色背景
每个场景中有哪些角色?
每个场景中的每个角色在做什么?
- 点击绿旗按钮,骰盅左右摇摆,并播放摇骰子声音
- 询问玩家骰子的点数是多少
- 将骰盅切换为一个随机的骰子
- 判断用户是否回答正确,如果回答正确,那么说“猜对了”,否则说“猜错了”。
积木提示
注意事项
- 骰盅和骰子是不同角色,还是不同造型。
- 利用改变造型编号参数来切换造型。
- 造型编号可以代表骰子点数
【解决篇】
这个案例相信很多人都有玩过,猜骰子的点数和大小。接下来,就来看看要如何实现它。
这个案例中用的就是默认的白色背景,不需要调整。接下来,思考一下角色有哪些?你可以看见在案例中有骰盅和不同的骰子,他们是一个角色的不同造型?还是不同的角色?
这个案例中的情况就和动物变变变中类似,虽然你看见了骰盅和不同的骰子,但是它们并没有同时出现。最简单的方式就是将它们作为一个角色的不同造型来使用。
现在就需要将这些造型图片上传上去。同样的,你可以在网上搜索图片,也可以加入我的知识星球下载图片和声音素材。
在这里我先提前给你一个小思考题,每个造型的顺序,对之后的程序控制会不会有影响?
除了上传完图片后,还需要把游戏时播放的摇骰子声音也上传上去。
接下来,就开始通过指令积木完成这个游戏。
1.点击绿旗按钮,骰盅左右摇摆,并播放摇骰子声音
第一步很简单,点击绿旗按钮后先初始化角色。在这里因为我使用的图片大小不一样,所以我需要选择骰盅造型后,调整好角色的大小。
接着,就开始摇骰子了。摇的过程会播放声音,所以使用播放声音([喵])积木。如何摇呢?观察一下是不是让角色左右调整方向就可以了。因为指令执行的很快,所以你需要像切换造型一样,在每次修改方向后,等待一定时间。它左右摇摆不止一次,所以使用重复执行(10)次积木让它重复调整方向。
现在,我再问你另外一个思考题,应该先播放声音还是先调整方向?为什么?时刻记住,程序是按照顺序执行的。
2.询问玩家骰子的点数是多少
这一步,需要你的游戏和玩家进行交互了,你要询问玩家骰盅中骰子的点数是多少,让玩家输入答案。这里就需要使用侦测分类中的询问(你叫什么名字?)并等待积木。
这个积木可以让角色像使用说话积木一样问玩家一个问题,同时舞台下方还会出现一个输入框,可以让玩家输入答案。执行该积木后,程序会停止往下运行,直到玩家输入完答案,点击输入框右侧的✔️或者按回车键后,才会继续执行。
现在就可以使用询问(你叫什么名字?)并等待积木,参数就是需要询问的问题,记得要让玩家理解你想让他输入什么。
3.将骰盅切换为一个随机的骰子
这一步是这个游戏的难点之一。
用户已经输入完答案,现在我们就需要展示一个骰子出来,看看用户猜的是否正确。为了保证游戏公平,你展示出来的点数应该是从1~6中随机抽取的。是不是又要用到在(1)和(10)之间取随机数积木,参数就是1和6。
现在你需要把获得的随机数所代表的骰子造型展示出来。例如,随机数是1,就展示1点的骰子造型,随机数是6,就展示6点的骰子造型。如何操作?
切换造型用什么积木?是不是可以用换成([造型1])造型积木。这个积木的参数可以选择什么?是不是可以选择造型编号和名称。而造型编号又是从1开始递增的,是不是正好对应着骰子的点数。
所以回到前面的问题,当你在上传完造型后,可以按照骰子的点数来排列造型顺序。这时你只需要将在(1)和(10)之间取随机数积木作为参数,放入到换成([造型1])造型积木中,角色就会切换为对应点数的造型了。
因为我使用的骰子造型比较大,所以还需要修改一下它的大小。
4.判断用户是否回答正确,如果回答正确,那么说“猜对了”,否则说“猜错了”。
最后一步,现在需要判断用户回答的正不正确。首先,如何获取用户输入的答案?这里需要使用回答积木。
在使用询问(你叫什么名字?)并等待积木时,用户输入完成后,Scratch就会将用户输入的答案存入回答积木中。
它和在(1)和(10)之间取随机数积木一样,是个椭圆形参数积木,点击时会有一个返回值,返回值就是用户输入的答案。
有了答案,你现在就要开始做判断了。如果答对了,做一件事,否则做另一件事。是不是使用如果<>那么否则积木。怎么比较用户是否答对?是不是用等于积木判断用户的答案和我们的随机数是否相同。刚刚的随机数是多少?是不是就是现在显示的骰子的造型编号。
最后使用说(你好!)(2)秒积木让它们说话就行。
猜骰子的点数就做完了,现在如果你要做的是猜骰子的大小应该怎么办?在这里我将点数分成1~3为小,4~6为大,用户只用输入大或者小。
另一个难点来了,获得了用户输入的大或者小后,怎么判定他是猜对还是猜错。
你可以动手先将不同的情况列出来。
用户输入 | 骰子点数 | 是否猜对 |
---|---|---|
小 | 1 | 对 |
小 | 2 | 对 |
小 | 3 | 对 |
小 | 4 | 错 |
小 | 5 | 错 |
小 | 6 | 错 |
大 | 1 | 错 |
大 | 2 | 错 |
大 | 3 | 错 |
大 | 4 | 对 |
大 | 5 | 对 |
大 | 6 | 对 |
现在就可以来找一下,用户猜对的情况有哪些。是不是用户输入小,并且骰子的点数小于4的时候。
用户输入小可以这样表示。
骰子的点数小于4可以这样表示。
是不是还剩下一个并且,这就要使用运算分类中的逻辑运算符与积木。
当它的左右两边同时为真(true)时,它就返回真(true)。其中只要有一边为假(false),它就会返回假(false)。
true 与 true = true
true 与 false = false
false 与 true = false
false 与 false = false
现在就将前面的两种情况放入与积木的左右两边。
如果用户输入小,并且骰子的点数小于4,那么就说“猜对了”。
如果用户输入的是大呢?是不是用户输入大,并且骰子的点数大于3。
前面是猜对的情况,剩下还有猜错的情况。
如果用户输入小,并且骰子的点数大于3,那么就说“猜错了”。
如果用户输入大,并且骰子的点数小于4,那么也说“猜错了”。
上面分别使用了4个如果<>那么积木来进行比较。你可以再想一想,能不能将它们合并起来,只使用一个如果<>那么否则积木进行判断?
是不是上面用户猜对的两种情况,只要满足任意一个,用户就算猜对了。
这时判断就变成了,如果用户输入小,并且骰子的点数小于4,或者用户输入大,并且骰子的点数大于3,那么就说“猜对了”,否则就说“猜错了”。
这里的或者如何比较?这就要使用运算分类中的另一个逻辑运算符或积木。
当它的左右两边任意一边为真(true)时,它就返回真(true)。只有两边同时为假(false),它才会返回假(false)。
true 与 true = true
true 与 false = true
false 与 true = true
false 与 false = false
前面的四种情况就可以合并成下面这样。
如果你是第一次学习与、或运算,可能会有点看不懂。需要你先去理解与、或的逻辑运算规则,然后再带入上面的情形进行演算。
完成了猜骰子,你还可以继续修改一下程序,试一试能不能让用户每次都猜对或者每次都猜错,这就是你在网上玩一些抽奖程序时候的作弊方式了。
想看更多学习案例,欢迎点击查看《Scratch 3学习手册》open in new window
想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店。