地图 ( 控制移动 )
这篇文章延续“绘制地图 ( 二维数组 )”文章,搭配更多的清单和变数的操作方式,实作按下键盘的上下左右,控制大型地图的移动。
相关文章参考:
打开范例
打开“绘制地图 ( 二维数组 )”的范例,从这个范例进行修改。
积木程序原理 ( 上下移动 )
打开范例后,新增一个名为“向上移”的函数,勾选“执行完毕再更新画面”。
“向上移”函数主要处理 map 清单的顺序,编辑完成函数后,设定按下“向上”键时,执行函数:
- 将 map 清单的最后一个项目,移动到第一个项目 ( 插入到第一个项目,然后删除最后一个项目 )。
- 执行“显示”函数。
重复上述的步骤,新增一个名为“向下移”的函数,勾选“执行完毕再更新画面”,设定按下“向下”键时,执行函数。
- 将 map 清单的第一个项目,移动到最后一项 ( 将第一项添加到最后一项,然后删除第一项 )。
- 执行“显示”函数。
完成后,点击绿旗,按下键盘的上与下,就能控制地图往上移动或往下移动。
这个范例设计成按下“向上”键时地图会往下移动,按下“向下”键时地图会往上移动,因为之后会在地图中放入角色,控制角色往下或往上时,地图会以反方向移动。
积木程序原理 ( 左右移动 )
新增一个名为“向左移”的函数,勾选“执行完毕再更新画面”。
左右移动必须要控制二维数组的第二层 ( 取出 map 的项目,再由项目拆出来的清单 ),所以“向左移”函数必须针对这部分做清单的处理:
- 新增一个变数 a,设定为 1,表示从 map 的第一个项目开始。
- 使用重复积木,map 有几个项目就重复几次,每次重复执行:
- 执行“拆字”函数,将取出的项目拆成 list 清单。
- 将 list 清单的最后一个项目,移动到第一项。
- 将变数 a 增加 1。
能够处理 list 清单后,新增一个“合并 list 为文字”的函数,勾选“执行完毕再更新画面”。
为什么要将 list 合并为一串文字呢?因为 Scratch 的清单只能存入文字或数字,所以必须要转换成文字,再将文字存入 map。
编辑“合并 list 为文字”的函数:
- 新增变数 b 为 1,表示从 list 的第一项开始。
- 新增变数 text 为“空”值 ( 不能包含空白 ),负责处理字串组合。
- 使用重复积木,list 有几个项目就重复几次,每次重复执行:
- 判断如果 b 小于 list 的长度,表示项目不是最后一项,进行字串组合时,加上逗号。
- 如果 b 等于 list 长度,表示项目是最后一项,直接进行字串组合。
- 将 b 增加 1。
设定按下“向左”键时,执行“向左移”函数,接着修改“向左移”函数:
- 执行“合并 list 为文字”函数。
- 将 map 的指定项目,替换成合并后的 text 文字。
- map 的个项目都处理之后,执行“显示”函数。
重复上述的步骤,新增一个“向右移”的函数,勾选“执行完毕再更新画面”,并将修改函数内容,将 list 的第一项移动到最后一项。
完成效果
完成后,点击绿旗,按下键盘的上下左右,就能控制地图的移动。
范例解答
范例解答:绘制地图 ( 控制移动 )
继续阅读
如果已经熟悉了绘制地图 ( 控制移动 ) 的程序,就可以继续阅读“绘制地图 ( 角色与墙壁 )”的文章。
文章链接:绘制地图 ( 角色与墙壁 )
微信扫码关注
抖音扫码关注