大型迷宫 ( 键盘控制 )
这篇文章会介绍,如何在 Scratch 里使用函数、碰到、按下键盘、位置改变、重复...等积木,实作一个迷宫游戏,迷宫的大小会超过舞台,必须要控制角色在大型迷宫里找到出口,同时在按下空白键时,可以出现迷宫的缩图提示现在位置。
游戏方式
大型迷宫游戏的游戏方式:
- 走迷宫的猫咪“固定在舞台中心”,移动时“让迷宫移动”,变成猫咪在移动的错觉。
- 按下键盘空白键时,显示“迷宫的完整缩图”,提示用户已经走到哪里。
建立迷宫
打开 Maze Generator 网站,可以产生基本的黑白迷宫,根据下方参数进行调整,并下载一个 SVG 迷宫。
- Width 宽 / Height 高:设定为 18x16,符合 Scratch 4:3 的比例,并避免数值太大导致迷宫太复杂。
- Inner width / height:只能一起设定 0 或 2,0 表示从边缘开始,2 表示迷宫中心点会有一个 2x2 的方格,这个范例设定 2。
- Advanced:迷宫可走的范围,设定 100 表示完整的迷宫 ( 不然会有一些部分看得到,但走不进去 )。
- Generate New:产生新迷宫。
- Download:下载迷宫,下载格式设定为 SVG。
角色设定
在角色编辑区,将猫咪角色名称设定为“猫咪”,使用“上传”功能,上传刚刚产生的 SVG 迷宫,使迷宫变成一个新的角色,并命名为“小迷宫” ( 参考:Scratch 角色设定 )。
点选“小迷宫”角色,切换到造型页签,按下键盘的 Ctrl + a ( 或 command + a ) 全选迷宫线条,将迷宫建立为“群组”,方便移动位置和改变尺寸,将尺寸调整为 480x360,并对齐画布正中心。html#a9) )。
复制“小迷宫”角色,重新命名为“迷宫”( 小迷宫角色负责预览,迷宫角色负责游戏 )。
点选“迷宫”角色,切换到造型页签,按下键盘的 Ctrl + a ( 或 command + a ) 全选迷宫线条,将迷宫建立为“群组”,方便移动位置和改变尺寸,将尺寸调整为 1440x1080,并对齐画布正中心。
为什么尺寸要设定为 1440x1080 呢?因为 Scratch 舞台默认大小为 480x360,为了让移动时迷宫可以占满整个 4x3 的版面,所以将宽度 480x3=1440,高度 360x3=1080,尺寸变成舞台大小的九倍。
复制猫咪角色,改名为“小猫咪”,接着使用“绘图”,新增一个黄色圆点,命名为“过关”。
积木程序原理 ( 迷宫 )
点击“迷宫”角色,从左侧清单建立三个变数:速度、mx、my。
- 速度:每次移动的距离。
- mx、my:预览时小猫咪的位置。
编辑点击绿旗的程序:
- 设定变数“速度”为 20。
- 设定 mx 和 my 为 0。
- 定位到舞台中心 (0, 0)。
- 使用重复无限次积木,侦测是否按下键盘空白键。
- 如果按下空白,设定图像效果“幻影”为 100,变成全透明 ( 隐藏 )。
- 如果放开空白,设定图像效果“幻影”为 0,变成不透明 ( 显示 )。
为什么要使用“幻影”积木而不使用“隐藏”积木?因为隐藏积木会让角色消失在舞台上,就无法侦测是否碰到迷宫墙壁,所以使用“幻影 100”来代替。
从左侧积木清单,建立一个名为“移动”的函数,添加 x 和 y 两个参数,并勾选“执行完毕再更新画面”。
编辑移动函数的内容:
- 设定 x、y 座标依据给予的 x、y 数值,做出对应的改变。
- 使用“重复...直到”积木,直到“迷宫碰到猫咪不成立”( 迷宫没有碰到猫咪 )。
- 每次重复让 x 或 y 往反方向移动 1 点。
- 重复结束后,将 mx 和 my 设定为目前的 x、y 座标。
在移动的过程中,猫咪有可能会“超出”迷宫,为了避免这种状况,可以让猫咪不断快速的往反方向移动 1 点,直到没碰到为止,最后结果就会让猫咪碰到墙壁就停止。
完成函数后,设定按下键盘上、下、左、右的时候,执行对应的函数。
积木程序原理 ( 猫咪 )
点击“猫咪”角色,设定点击绿旗程序:
- 定位到舞台中心点 (0,0)。
- 尺寸设定为 60% ( 根据地图设定合适的大小 )。
- 回转方式设定为“左-右”( 避免旋转时上下颠倒 )。
- 使用重复无限次积木,侦测是否按下键盘空白键。
- 如果按下空白,设定图像效果“幻影”为 100,变成全透明 ( 隐藏 )。
- 如果放开空白,设定图像效果“幻影”为 0,变成不透明 ( 显示 )。
为什么要使用“幻影”积木而不使用“隐藏”积木?因为隐藏积木会让角色消失在舞台上,就无法侦测是否碰到迷宫墙壁,所以使用“幻影 100”来代替。
设定收到消息“过关”时,讲出“过关了”文字,并在按下键盘左或右时,面朝 -90 度和 90 度。
积木程序原理 ( 小猫咪 )
点击“小猫咪”角色,设定点击绿旗的程序:
- 定位到舞台中心 (0, 0)。
- 回转方式设定为“左-右”( 避免旋转时上下颠倒 )。
- 尺寸设定为 20% ( 猫咪角色尺寸的 1/3 )。
- 设定图像效果“幻影”为 100,变成全透明 ( 隐藏 )。
- 使用重复无限次积木,侦测是否按下键盘空白键。
- 如果按下空白,设定图像效果“幻影”为 0,变成不透明 ( 隐藏 )。
- 如果放开空白,设定图像效果“幻影”为 100,变成透明 ( 显示 )。
新增第二组点击绿旗程序,负责“小猫咪的定位”和“过关的判断”,并设定当键盘向右和向左键按下时,将小猫咪转向 90 和 -90 度。
- 使用重复无限次积木。
- 每次重复将猫咪定位到 ( mx/-3, my/-3 ) 的位置。
- 每次重复侦测如果碰到“过关”角色,发送过关消息。
为什么要使用 ( mx/-3, my/-3 )?因为小猫咪的移动方向和地图相反,尺寸又是猫咪的 1/3,所以除以 -3 就会得到正确的座标位置。
积木程序原理 ( 小迷宫 )
点击“小迷宫”角色,设定点击绿旗的程序:
- 定位到舞台中心 (0, 0)。
- 设定图像效果“幻影”为 100,变成全透明 ( 隐藏 )。
- 使用重复无限次积木,侦测是否按下键盘空白键。
- 如果按下空白,设定图像效果“幻影”为 0,变成不透明 ( 隐藏 )。
- 如果放开空白,设定图像效果“幻影”为 100,变成透明 ( 显示 )。
积木程序原理 ( 过关 )
点击“过关”角色,设定点击绿旗的程序:
- 定位到舞台上方出口的位置 (-15, 185)。
- 设定图像效果“幻影”为 100,变成全透明 ( 隐藏 )。
- 使用重复无限次积木,侦测是否按下键盘空白键。
- 如果按下空白,设定图像效果“幻影”为 0,变成不透明 ( 隐藏 )。
- 如果放开空白,设定图像效果“幻影”为 100,变成透明 ( 显示 )。
完成效果
完成后,点击绿旗,就可以开始进行大型迷宫的游戏。
范例解答
范例解答:大型迷宫 ( 键盘控制 )
延伸练习
如果已经熟悉了大型迷宫 ( 键盘控制 )的基本原理,还可以尝试更多好玩的作法:
- 加上计时机制,记录走完迷宫要花多久时间。( 解答 )
微信扫码关注
抖音扫码关注