11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 80|回复: 3
上一主题 下一主题

[悬赏 ≤ 99 银子] 如何判断玩家在数组地图上任意移动形成的矩形已封闭?

[复制链接] TA的其它主题
发表于 2022-7-26 10:31:53 | 显示全部楼层 |阅读模式
70银子
本帖最后由 SUPERSEIYA 于 2022-7-27 14:27 编辑

如图所示:红点代表玩家,红色代表1,白色代表0
QQ截图20220726102506.png

最佳答案

查看完整内容

首先,玩家离开版边之后,脚下的格子当然是0 每移动后检查一次,如果任意一次检查玩家脚下的格子是1,认为玩家再次碰到了版边。 (P.S. 这个类型游戏通常禁止玩家回头移动,不考虑玩家前进一步再后退一步情况) 玩家撞版即表示形成了一个封闭区域 这次移动必定会将整个图形划分成一大一小的两个部分 此类游戏希望将其中较小的一部分(或者不包含游戏boss的一部分)其中的点全部标记为1 那么,下一步是找出者两个区域内的所有点 ...
发表于 2022-7-26 10:31:54 | 显示全部楼层
首先,玩家离开版边之后,脚下的格子当然是0
每移动后检查一次,如果任意一次检查玩家脚下的格子是1,认为玩家再次碰到了版边。
(P.S.  这个类型游戏通常禁止玩家回头移动,不考虑玩家前进一步再后退一步情况)

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

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

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

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

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

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

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

1111.png
回复

使用道具 举报

 楼主| 发表于 2022-7-31 15:58:34 | 显示全部楼层
老将,那任意为0的点怎么确定呢?总不能随机确定吧?
回复

使用道具 举报

发表于 2022-8-1 15:31:32 | 显示全部楼层
只要还有点是0,就重复上述步骤,
遍历
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

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

627554010(147)、 363995287(841)、 xgsgzxl(22712)、 yiflash(54449)、 2199182141(51486)

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

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C3. anghuo(147)、 C1. fdisker(27945)、 C2. haohao1020(38506)



快速回复 返回顶部 返回列表