You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

游戏中玩家围合形状识别与内部方块填充实现方法

方块竞技游戏闭合围地染色实现方案

直接按你拆分的两个核心环节落地即可,所有逻辑都适配栅格方块地图,不需要复杂的计算几何知识:

一、闭合形状识别逻辑

  • 为每个玩家独立维护一个路径缓存队列,仅存储玩家离开自身已染色区域后走过的所有方块坐标,玩家每移动到新的未染色/其他玩家染色方块时,就把对应坐标压入队列。
  • 闭合判定规则非常明确:当玩家移动后踩到的方块属于自身已有的染色区域,且当前路径缓存队列长度≥3(满足最小闭合图形的边数要求),即判定形成有效闭合形状。此时队列内存储的全部坐标+当前踩到的自身色块,共同构成闭合形状的完整边界。
  • 加一层过滤逻辑:如果路径队列长度小于4、或者玩家踩中自身色块时和队列最后一个坐标的曼哈顿距离小于2,直接跳过判定,避免玩家在自身领地边缘来回蹭触发无效填充。

二、闭合区域内部填充逻辑

栅格地图下不要硬套计算几何的点在多边形内判定,直接用Flood Fill(泛洪填充)反向标记法,实现简单、运行效率极高,完全匹配你要的周长边界围合后内部全染色的效果:

  1. 先把本次识别到的所有闭合边界方块临时打上「边界阻挡」标记,填充过程中这些方块不可穿越。
  2. 取闭合边界的最小外接矩形范围(即边界坐标里最小/最大的X、Y值圈出来的矩形),不需要遍历全图,从矩形的四条边上所有不属于边界、也不属于玩家颜色的方块开始做泛洪遍历,所有能走到的方块全部标记为「外部区域」。
  3. 遍历这个最小外接矩形范围内的所有方块:凡是没被标记为外部区域、也不是边界阻挡、还没染成当前玩家颜色的方块,全部属于闭合形状内部,直接统一染成该玩家的专属颜色即可。
  4. 填充完成后清除所有临时标记,清空对应玩家的路径缓存队列,等待下一次路径闭合即可。

性能提示

单局8人的场景下,哪怕单块地图尺寸到200*200,这套逻辑的单帧运算量也不到1ms,完全不会出现卡顿;如果遇到玩家围出的形状特别大的情况,可以把填充逻辑放到分帧协程里跑,避免阻塞主线程。

内容的提问来源于stack exchange,提问作者Ofek150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 06:21:19