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

如何在棋盘上正确渲染玩家位置与墙体?

动态渲染带玩家与墙体的棋盘实现方案

你当前的实现是硬编码生成空棋盘,无法动态插入玩家或墙体,扩展性极差。正确思路是先构建可修改的棋盘数据结构,再根据数据生成最终的棋盘字符串,具体步骤如下:

  • 初始化棋盘格子:用二维列表表示9×9的棋盘,所有格子初始为.,方便后续修改指定位置内容
  • 坐标映射:玩家的pos是[x, y](x为列号1-9,y为行号1-9),需转换成二维列表索引:
    • 行索引:9 - y(棋盘行号从上到下是9→1,对应列表索引0→8)
    • 列索引:x - 1(列号从左到右是1→9,对应列表索引0→8)
  • 填充玩家位置:遍历玩家列表,把对应索引位置的格子替换为玩家的nom
  • 填充墙体:同理,遍历墙体列表(如果有),把对应位置替换为墙体符号(比如#)
  • 生成棋盘字符串:根据二维列表内容,逐行拼接棋盘的边框、行号、格子内容,最后加上底部列号

实现代码示例

def formater_damier(joueurs, murs=None):
    # 初始化9×9的棋盘,所有格子为'.'
    grille_grids = [['.' for _ in range(9)] for _ in range(9)]
    
    # 处理玩家位置
    for joueur in joueurs:
        x, y = joueur["pos"]
        row_idx = 9 - y
        col_idx = x - 1
        grille_grids[row_idx][col_idx] = joueur["nom"]
    
    # 处理墙体(如果传入墙体列表)
    if murs:
        for mur_pos in murs:
            x, y = mur_pos
            row_idx = 9 - y
            col_idx = x - 1
            grille_grids[row_idx][col_idx] = '#'
    
    # 构建棋盘字符串
    grille_lines = []
    grille_lines.append('    ----------------------------------- ')
    
    # 生成每一行的内容(行号9到1)
    for i in range(9):
        row_num = 9 - i
        row_content = '  '.join(grille_grids[i])
        grille_lines.append(f'{row_num} |  {row_content}  | ')
        # 添加分隔行(最后一行内容后不需要)
        if i != 8:
            grille_lines.append('  |                                     | ')
    
    # 底部分隔线与列号
    grille_lines.append('--| ----------------------------------- ')
    grille_lines.append('  |  1   2   3   4   5   6   7   8   9 ')
    
    return '\n'.join(grille_lines)

# 测试用例
if __name__ == '__main__':
    joueurs_test = [
        {"nom": "1", "pos": [5, 5]},
        {"nom": "2", "pos": [8, 6]}
    ]
    murs_test = [[3, 7], [6, 3]]  # 示例墙体位置
    print(formater_damier(joueurs_test, murs_test))

这种写法的优势:

  • 完全动态,不管玩家数量、位置或墙体数量如何变化,都能正确渲染
  • 代码可维护性强,修改格子样式、边框格式只需调整拼接逻辑
  • 数据层(二维列表)与视图层(字符串输出)分离,逻辑清晰不易出错

内容的提问来源于stack exchange,提问作者Henricharles N'dri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:01:03