2D游戏:地图

程序设计需要将各种需要模拟计算的内容抽象为数字。

通常采用二维数组表示2D地图 

又以不同的数字代表地图上不同类型的事物,让我们看一个地图设计的例子: 

0 表示没有任何障碍的平坦区域 

平坦的区域


一个数字能够表示地图上的最小单位,多个数字一起则能表示出一片区域。

想象上面这片区域是一片平坦的区域,最外层的 0 则可以理解为区域的边界。这片只有数字 0 的区域仅仅是在程序计算时的样子,我们可以将地图更好的呈现出来,比如让 0 表示一块草地。


草地

这块草地与我们之前看到的 0 字区域不一样,是视角发生了变化,看着更为立体些。 

1 表示玩家扮演的角色 


区域和角色

你能告诉我玩家扮演的角色在平坦区域的位置吗? 

如果你看见了那个蓝色的角色…… 等等我们还是先给它取一个名字,毕竟“蓝色的角色”太拗口

呃,蓝色的1…… 就叫它 “蓝波丸” 吧

2 表示角色不可以通行的墙,让我们在地图上设置一些墙 

区域、角色、墙

经过这样的设定后,我们就可以约束角色的活动范围或者路线 

想想看,你如果控制着角色 蓝波丸 该怎样行走才能到达地图的另一端? 


蓝波丸的位置

蓝波丸:等下,我好像还不会走路 

新任务1:控制角色移动 

找到我们控制的角色,放大局部地图,如下: 


蓝波丸的位置[局部]

看起来 蓝波丸 停在右下角的位置,现在我们要让 蓝波丸 动起来。虽然目前我们还无法控制 蓝波丸 不过可以先想象角色移动一步后的画面 


移动一步的结果

蓝波丸 可以向3个方向移动。地图的边界也就是数组的边界,蓝波丸 和你一样无法穿越边界,角色无法穿越地图边界,而设计游戏的你无法穿越数组边界。 

蓝波丸 目前站在平坦区域的右下角,由于地图边界的限制最多只能向3个方向移动,但如果 蓝波丸 不在平坦区域的边界附近则能向8个方向移动,如果将 蓝波丸 能移动的所有方向用线画出来刚好是个“米”字形状。 

现在我们来制定一个具体的目标,向左移动 1 步 


左移一步

现在我们要在二维数组中模拟图中的变化,所以我们需要 

1. 在 蓝波丸 位置左边写入蓝波丸 

2. 清除初始位置的 蓝波丸 

将这两步画出来应该是这样


左移过程

你可能感兴趣的:(2D游戏:地图)