抽签 ( 可调整中签数量 )
这篇教学会利用 Scratch 角色的造型与变数的调整滑杆,搭配“区域变数”、“全域变数”和“广播”,制作可以自行设定抽签总数,以及中签数量的抽签小游戏。
快速导览:
绘制角色造型
使用“绘画”工具建立“签”的角色“straw”,角色有两个造型,第一个造型是“no”表示“没有中签”,内容为一根水平的长方形,第二个造型是“yes”表示“中签”,跟“no”的差异在于长方形左侧有一个红色圆形,内容有一个顺时针旋转 90 度的“中”字,整体造型位置对齐画布中心。
使用“绘画”工具建立“显示结果”的角色“text”,角色有两个造型,第一个造型是“no”表示“没有中签”,内容为大型的文字“没中”,第二个造型是“yes”表示“中签”,内容为大型的文字“抽中啦”,整体造型位置对齐画布中心。
使用“绘画”工具建立“设定按钮”的角色“setting”,使用灰色黑框长方形,内容有文字 SETTING,整体造型位置对齐画布中心。
使用“绘画”工具建立“设定面板”的角色“board”,使用浅色黑边长方形为底,上方有标题文字以及“抽签总数”和“中签数”两组文字,文字下方预计放入有调整滑杆的变数,整体造型位置对齐画布中心。
使用“绘画”工具建立“关闭面板按钮”的角色“close”,使用圆形搭配直线画出关闭的造型,整体造型位置对齐画布中心。
使用“绘画”工具建立“确认设定按钮”的角色“submit”,使用橘色黑框长方形,内容有文字 SUBMIT,整体造型位置对齐画布中心。
抽签画面预计分成两种,第一种是“正在抽签”的画面,各个角色排列如下图:
第二种是“设定”的画面,各个角色排列如下图:
积木程序原理 ( straw )
前往“straw”角色,这个角色是最重要的“签”,点击绿旗时设定变数总签数 total 为 10,中签数 total_ok 为 2,接着广播 clear 消息负责删除舞台上的抽签分身,等待分身都删除后广播 submit 消息。
收到 submit 消息,先设定变数 x 为 -200,这个变数表示签的水平座标可以动态更改,如果签小于 10 支,就根据签的数量动态改变 x 内容,最后透过定位的方式设定第一支签的位置。
新增“中签号码”函数,勾选“执行完毕再更新画面”,预计执行后会产生中签的号码。
“中签号码”函数内容里,先判断如果中签数 total_ok 小于总签数 total,就将 total_ok 设定为 total 的数值 ( 避免中签数大于总签数 ),接着新增清单 ok_number,使用“重复...直到”积木,产生随机数之后,判断如果清单中没有产生的数字,就将该数字写入清单,直到清单长度等于中签数为止,如此一来就能使用 ok_number 清单储存中签的号码。
新增“分身”函数,勾选“执行完毕再更新画面”,预计执行后会根据 total 和 total_ok 的数值,产生对应数量的分身。
“分身”函数内容里,先设定一个变数 n,接着根据签的总数进行重复,每次重复时将 n 增加 1,并判断 ok_number 清单里是否有 n 的数值,如果有,就将签改为中签的造型,如果没有就保持没有中签的造型,此外,也可以透过位置和亮度的调整,让每一签都有点不同,也可以运用简单的数学公式,每支签排列时都会带有一些旋转的角度。
设定点击角色的程序 ( 点击角色支援点击分身 ),点击签的角色时,除了设定图层往前以及亮度之外,运用移动积木将签往上移动产生“抽签”效果,并根据签的造型决定是否中签,如果中签就发送 yes 信号,如果没有中签就发送 no,除此之外,当收到 clear 信号后,删除分身 ( 所有分身都会收到信号,收到后就会将自己删除 )。
编辑收到 submit 消息的程序,在最后方依序执行“中签号码”和“分身”函数。
到这个阶段,点击绿旗后应该就可以看见基本的抽签效果。
积木程序原理 ( text )
前往“text”角色,这个角色会使用大型文字显示是否中签,点击绿旗时隐藏角色,收到 yes 或 no 信号时,显示造型并切换为 yes 或 no 的造型,三秒后再度隐藏角色,如果收到 submit 信号,立刻终止所有的等待过程,隐藏角色。
积木程序原理 ( setting )
前往“setting”角色,这个角色是“设定按钮”,点击后会打开设定面板设定中签数和总数,点击绿旗时显示角色,点击角色后会发送 setting 信号并隐藏角色,收到 submit 和 close 信号时会再度显示角色。
积木程序原理 ( board )
前往“board”角色,这个角色是“设定面板”,面板中除了说明文字,还会包含具备拖拉滑杆的变数,点击绿旗以及收到 submit、close 信号时,隐藏角色以及隐藏 total 和 total_ok 变数,收到 setting 信号时,显示角色、total 和 total_ok 变数,并发送 show 信号 ( 面板上的按钮会接收 show 信号,避免被面板盖住 )。
当变数出现在舞台上后,用鼠标在变数上按“右键”,将变数设定为“滑杆”,就能让用户自行调整数值。
点击“变更滑杆数值范围”,将 total 变数范围设定 2~20,total_ok 变数范围设定为 1~20。
积木程序原理 ( close )
前往“close”角色,这个角色是“关闭按钮”,点击后会关闭设定面板,设定点击绿旗、角色点击以及收到 submit 信号时隐藏角色,收到 show 信号时显示角色,并将角色的图层设定到最前方。
积木程序原理 ( submit )
前往“submit”角色,这个角色是“确认设定按钮”,点击后会重新设定 total 和 total_ok 变数,并根据变数产生对应的画面,收到 show 信号时显示角色并将角色的图层设定到最前方,点击绿旗、收到 close 和点击角色时隐藏角色,但在点击角色时,必须使用“广播消息并等待”,确保收到 clear 信号的动作都完成后,再发送 submit 信号 ( 避免画面上还有前一次的分身 )。
完成效果
所有角色的程序都完成后,点击绿旗,舞台上会根据设定出现 2~20 支签,就能够开始进行抽签的小游戏啰。
范例解答
范例解答:抽签 ( 可调整总数、中签数 )
微信扫码关注
抖音扫码关注