如何判断玩家在数组地图上任意移动形成的矩形已封闭?
本帖最后由 SUPERSEIYA 于 2022-7-27 14:27 编辑如图所示:红点代表玩家,红色代表1,白色代表0
首先,玩家离开版边之后,脚下的格子当然是0
每移动后检查一次,如果任意一次检查玩家脚下的格子是1,认为玩家再次碰到了版边。
(P.S.这个类型游戏通常禁止玩家回头移动,不考虑玩家前进一步再后退一步情况)
玩家撞版即表示形成了一个封闭区域
这次移动必定会将整个图形划分成一大一小的两个部分
此类游戏希望将其中较小的一部分(或者不包含游戏boss的一部分)其中的点全部标记为1
那么,下一步是找出者两个区域内的所有点。
如下图。设红色的是此次移动之前已经封闭的区域
蓝色是此次移动路线,
设白色为0,红色为1,蓝色当然也是1
那么,移动之后,
以任意为0的点为起点,递归检查这个点周围4个点是否是0.如果是,认为这些点相连。
如图中,以任意绿色起点开始,递归向四周检查,最后得到了一个区域内所有点(的xy坐标)
只要还有点是0,就重复上述步骤,
最终会得到两个数组,分别包含了上图左下和右上两个区域的所有的点
根据游戏规则将其中较小的一份(或者不包含boss的一份)全部标记为1,
另外一份全部标记为0,
即可完成这一步的逻辑
老将,那任意为0的点怎么确定呢?总不能随机确定吧? 只要还有点是0,就重复上述步骤,
遍历
页:
[1]