SUPERSEIYA 发表于 2022-7-26 10:31:53

如何判断玩家在数组地图上任意移动形成的矩形已封闭?

本帖最后由 SUPERSEIYA 于 2022-7-27 14:27 编辑

如图所示:红点代表玩家,红色代表1,白色代表0

general_clarke 发表于 2022-7-26 10:31:54

首先,玩家离开版边之后,脚下的格子当然是0
每移动后检查一次,如果任意一次检查玩家脚下的格子是1,认为玩家再次碰到了版边。
(P.S.这个类型游戏通常禁止玩家回头移动,不考虑玩家前进一步再后退一步情况)

玩家撞版即表示形成了一个封闭区域
这次移动必定会将整个图形划分成一大一小的两个部分
此类游戏希望将其中较小的一部分(或者不包含游戏boss的一部分)其中的点全部标记为1

那么,下一步是找出者两个区域内的所有点。

如下图。设红色的是此次移动之前已经封闭的区域
蓝色是此次移动路线,

设白色为0,红色为1,蓝色当然也是1

那么,移动之后,
以任意为0的点为起点,递归检查这个点周围4个点是否是0.如果是,认为这些点相连。
如图中,以任意绿色起点开始,递归向四周检查,最后得到了一个区域内所有点(的xy坐标)

只要还有点是0,就重复上述步骤,
最终会得到两个数组,分别包含了上图左下和右上两个区域的所有的点

根据游戏规则将其中较小的一份(或者不包含boss的一份)全部标记为1,
另外一份全部标记为0,
即可完成这一步的逻辑


SUPERSEIYA 发表于 2022-7-31 15:58:34

老将,那任意为0的点怎么确定呢?总不能随机确定吧?

general_clarke 发表于 2022-8-1 15:31:32

只要还有点是0,就重复上述步骤,
遍历
页: [1]
查看完整版本: 如何判断玩家在数组地图上任意移动形成的矩形已封闭?

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)