当前位置:首页 期刊杂志

micro:bit与Scratch3.0结合案例

时间:2024-05-08

张宜婕

在炎热的夏天喝到一杯清凉而又有营养的混合果汁,确实是一件令人舒爽的事。今天,我们将以“制作夏日果汁”为主题,用micro:bit制作人机互动游戏。它以经典视频游戏“水果忍者”为原型设计,参与者挥动“水果刀”,就能切开屏幕中的水果,制作一杯清凉的果汁。

游戏介绍

这是一个结合了micro:bit与Scratch3.0技术实现的虚拟与现实交互游戏。挥动内置有micro:bit主控板的“水果刀”即可与屏幕上的画面内容实时互动。开始游戏后,画面左下方的食谱页面即是你要做的混合果汁的菜谱,画面中心的水果落到白色的瞄准区,挥动水果刀可将落入瞄准区的水果切开做成果汁。每成功切开1个水果,画面中杯子内的果汁也会同步增加,果汁装满后会根据切开的水果进行评分,若切开的水果均与食谱相同,便会回馈“好喝”;部分不同,回馈“一般般”;大多数不同,回馈“难喝”。

互动技术说明

案例通过micro:bit与Scratch3.0实现实体装置的实时互动。Scratch3.0的新功能自带micro:bit的输入扩展,可以很便捷地通过蓝牙连接Scratch3.0与micro:bit。

我们可以使用Scratch3.0中的“当被晃动”的事件模块,结合侦测物体碰撞的模块实现micro:bit与Scratch的互动。程序检测挥动水果刀时,水果是否与瞄准线接触,如果接触就切换切开水果的造型,就可以实现挥动水果刀切水果的触发事件。

编程结构说明

案例主要由3个场景组成:互动方式说明、主要互动内容和互动结果说明。3个场景彼此循环衔接,通过广播消息,触发角色在不同场景间切换功能与外观造型。

第1场景:互动方式说明

使用“说”“显示”“隐藏”模块说明互动的具体方式,并通过点击事件触发消息广播,进入“主要互动内容”。

第2场景:主要互动内容

主要互动内容的功能为:随机呈现食谱上的水果种类与数量,记录游戏的进行时间,通过随机的速度与位置让水果落下,判断当前水果是否被切开,计算切开水果的正确率。使用变量“V-题目水果数”记录随机出题的水果数量,

(1)使用变量“L-题目水果序号”、重复执行,克隆实现:在指定位置克隆水果角色。

(2)根据变量“V-题目水果数”的大小决定重复执行的次数,实现随机生成不同水果数量的劝能。

(3)使用变量“L-题目水果序号”计算出水果的坐标(x.y),(-200.-80)是左上角的水果坐标,从左上角开始,依序由左到右,从上到下生成对应数量的水果角色。35是水果x方向的间距,50是水果y方向的间距,通过图与表格可以观察到:x坐标变化酌量是35x(变量“L-题目水果的序号”/3的余数);y坐标变化的量是50x(变量“L-题目水果的序号”/3向下取整)。食谱上的水果角色造型需随机产生但不重复,可先从列表中随机挑出1个水果造型,通过变量记录出现过的水果序号,再从列表中删除出现过的造型。

(1)使用列表“水果题目”记录当前的水果序号。

(2)使用变量“V-删除题目序号”记录出现过的题目。

(3)使用列表“水果题目”记录出现在食谱上的水果序号。

(4)记录完后将出现过的题目从列表“水果题目”中删除。

由于食谱的水果与落下齣水果使用相同的角色进行克隆,通过变量“F-水果角色的状态”判断克隆后的大小与造型。

当水果角色在食谱上显示完毕后,通过广播开始记录游戏时间。

(1)使用计时器归零模块计时。

(2)使用变量“V-时间”记录指定的游戏时长。

(3)使用变量“倒数计时”记录剩余的秒数。

当水果角色在食谱上显示完毕后,通过广播,切换水果角色的状态,并随机时间克隆落下的水果角色,使用局部变量“V-下落速度”记录每一个克隆角色的下落速度,局部变量搭配克隆使用。可以记录不同克隆体的数据信息,适合需要克隆体各自带有不同属性时使用。

(1)换成造型模块除了鼠标切换名字,也可以直接使用编号控制,因此可通过随机数切换不局造型。

(2)使用随机数设定变量“V-下落速度”。

(3)使用重复执行判断克隆体的y坐标,当克隆体下落到画面底部时,直接删除克隆体,避免生成过多不必要的新角色,增加Scrath的运行负担,

当冰果接触到瞄准区,同时挥动micro:bit时,需要通过切换造型表示水果被切开。

因为不是一个水果对应一个造型,通过变量与列表。动态对应水果跟果汁的造型,列表“造型节点”记录水果造型的颜色节点,使用如果模块判断,造型编号1-7对应红色果汁。造型编号8-14对应黄色果汁、造型编号15-16对应绿色果汁、造型编号17对应紫色果汁,列表“果汁造型”记录果汁造型的造型标号。

(1)使用碰到的侦测模块判断是否接触到瞄准区。

(2)使用变量“L-水果类型”与重复执行自动执行自制的積木内容。

执行的内容等同4个如果判断,为使程序更加弹性好修改。使用变量替代所有手动输入指定的数据,使用太小增加、虚像特效模块,实现水果被切开后的画面效果。

判断列表“可以切的水果”中是否有当前角色的造型编号,并使用变量“V-分数”记录结果,同时播放对应的音效。

第3场景:互动反馈机制

这个场景提供使用者得知最后的互动成果,在杯子角色中通过广播触发事件,当切到水果时,让杯子角色切换造型,呈现杯中果汁变多的效果。当果汁装满,即造型编号等于7的时候,广播结束游戏,根据变量“V-分数”判断最后切换的造型。

当模块多、功能复杂的时候,为了让程序更加灵活,提高管理效率,会使用大量的变数与列表对数据进行统一处理,因此变量的命名就格外重要,具有意义的命名有助于自己回忆变量的用途,我们习惯在变量前再加上1个英文字母作为功能的区分,如:

F:Flag.此变量作为记录状态使用;

L:Loop.此变量配合重复执行使用;

V:Variable.此变量作为记录各种数据使用。

总结思考

一个完整的互动案例设计需要包含互动方式指引、互动主要内容和反馈互动成果,同时可以让使用者反复循环操作。在这个案例中,我们可以看到这三者的作用。

互动方式指引的目的在于让使用者了解如何操作,好的指引可以提升使用者的互动体验,不会因过多的错误操作导致使用者产生太大的挫折感,比如各种APP更新后,都会先出现指引画面,告知功能与操作方式。在本案例中,游戏开始时我们向玩家明确角色说明互动方式,告知中间瞄准线的作用,以及食谱在互动中的意义。

互动的主要内容就是使用者体验的主体部分,切水果案例本质是游戏,需要注重游戏的可玩性,也就是如何呈现更好的游戏体验。例如,在案例中通过水果掉落的随机性、食谱的随机性增加游戏的可玩度。实现互动的方式有交互性和艺术性。交互性以清晰的设计交互方式让使用者可以充分、正确、容易理解游戏的世界与变化的原因,例如在案例中如果水果被切到,会变成果汁,同时配合对应的声音效果。艺术性则体现在游戏需要包含丰富的声光效果,使用符合游戏内容的艺术元素提升使用者的感受体验,例如案例中在不同环节播放不同的背景音乐,不同角色的互动状态也会搭配对应的音效。

体验完后给予反馈是相当重要的环节,这也是让使用者了解自己体验的具体内容是什么,好的反馈可以给予使用者更好的情感体验,例如在案例中通过喝果汁后的反应反馈切水果的正确性,这也是跳脱一般显示分数的反馈方式,结合情境所设计的反馈效果。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!