游戏动态

地图斜角接触到底算不算同一片区域:六格地形的两种邻接分组(实例25)

2026-11-05

两块地形只在角上碰到时,是否属于同一区域取决于采用哪一种邻接规则。混用规则会让区域数量、填色范围和连通提示彼此矛盾。

先确定规则与输入

地图六乘六,只研究值为一的格子。四邻接只允许上下左右相连,八邻接再允许四个斜角方向;地图边缘不环绕。两种规则都只判断静态格子集合是否连通。

一为研究地形,零为背景 011110 111110 110101 101001 110000 111100

逐项算出过程

四邻接组件1,大小19,格子坐标[[0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [1, 0], [1, 1], [1, 2], [1, 4], [1, 5], [2, 0], [2, 1], [2, 5], [3, 0], [3, 1], [3, 2], [3, 5], [4, 0], [4, 1]]。

四邻接组件2,大小1,格子坐标[[2, 3]]。

四邻接组件3,大小2,格子坐标[[5, 2], [5, 3]]。

八邻接组件1,大小22,格子坐标[[0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [1, 0], [1, 1], [1, 2], [1, 4], [1, 5], [2, 0], [2, 1], [2, 3], [2, 5], [3, 0], [3, 1], [3, 2], [3, 5], [4, 0], [4, 1], [5, 2], [5, 3]]。

共有22个目标格,四邻接3片,八邻接1片。组件数量减少来自合并,不是目标格消失。

复核时看什么

先列出四邻接的每个组件,再看哪些组件因斜角接触被合并。八邻接组件数不会比四邻接更多,但组件大小分布可能变化很大。每个目标格都必须恰好归入一个组件。

练习时可以先遮住结果,沿用相同输入独立记录中间状态,再逐项比较。发现不同后先定位最早分歧,确认边界包含方式、编号起点、更新顺序以及是否提前取整。最后结果一致也不表示每个中间步骤都正确,因此保留过程记录有助于看清原因。

适用范围

连通不等于角色一定能穿过。八邻接把斜角视为相邻,只是图上的定义;有宽度的角色可能仍被两侧墙角挡住。路径碰撞规则应另外说明,不能从填色连通性直接推断移动合法性。