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

如何用Python识别2维列表地图海岸线以生成游戏海滩地形

海岸线海滩标记实现方案

两种可直接落地的实现方式,完全匹配你给出的输入输出示例效果:

方法一:逐陆地单元格检测(小地图优先选)

逻辑最直接,无复杂遍历,适合尺寸较小的地图:

  • 先复制原始地图,避免检测过程中修改原数据影响判断
  • 遍历每个单元格时,仅对值为1的陆地做四方向邻接检查
  • 邻接位置如果是地图内的0,或者超出地图边界(视为外部水体),就标记为2,否则保留1
  • 水体单元格(0)全程保持不变

代码示例

def add_beach(area):
    rows = len(area)
    cols = len(area[0])
    new_area = [row.copy() for row in area]
    
    # 四方向偏移:上、下、左、右
    dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)]
    
    for y in range(rows):
        for x in range(cols):
            if area[y][x] != 1:
                continue
            is_beach = False
            for dy, dx in dirs:
                ny, nx = y + dy, x + dx
                # 超出边界视为外部水体,或地图内是0水体
                if not (0 <= ny < rows and 0 <= nx < cols) or area[ny][nx] == 0:
                    is_beach = True
                    break
            new_area[y][x] = 2 if is_beach else 1
    return new_area

方法二:从水体出发的BFS实现(大地图性能优先)

如果地图尺寸较大,逐陆地检测会产生冗余开销,这种基于BFS的Flood Fill思路效率更高:

  • 初始将所有水体单元格(0)加入待处理队列
  • 逐个取出队列中的水体单元格,检查四个方向的相邻单元格
  • 若相邻单元格是未处理的陆地(值为1),直接标记为2,无需重复扩散
  • 仅需遍历水体的邻接区域,无需全量扫描所有陆地

代码示例

from collections import deque
def add_beach(area):
    rows = len(area)
    cols = len(area[0])
    new_area = [row.copy() for row in area]
    q = deque()
    
    # 将所有水体单元格入队
    for y in range(rows):
        for x in range(cols):
            if area[y][x] == 0:
                q.append((y, x))
    
    dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)]
    while q:
        y, x = q.popleft()
        for dy, dx in dirs:
            ny, nx = y + dy, x + dx
            # 仅处理邻接的未标记陆地
            if 0 <= ny < rows and 0 <= nx < cols and new_area[ny][nx] == 1:
                new_area[ny][nx] = 2
    return new_area

可调整参数

  • 若需要将斜向邻接的水体算作有效邻接,只需将方向列表dirs扩展为八方向:
    dirs = [(-1,-1), (-1,0), (-1,1), (0,-1), (0,1), (1,-1), (1,0), (1,1)]
  • 若需要多层宽海滩,可在上述逻辑跑完一次后,对已标记为2的单元格再执行一次邻接标记1改为2的操作
    用你给出的初始地图测试两种方法,输出结果均与目标改造效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 17:06:04