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

如何用Colorama实现扫雷棋盘元素值的差异化着色打印?

扫雷脚本Colorama着色与网格显示修复方案

核心问题解决要点

  • 正确初始化Colorama并开启自动颜色重置,避免颜色污染后续文本
  • 定义数字/标记与颜色的映射表,统一管理着色规则
  • 固定每个单元格的显示宽度,彻底解决网格压缩问题

具体实现步骤

1. 初始化Colorama并定义颜色映射

from colorama import init, Fore

# 初始化Colorama,自动重置颜色
init(autoreset=True)

# 定义颜色映射表,可根据需求调整
COLOR_MAP = {
    '0': Fore.WHITE,
    '1': Fore.BLUE,
    '2': Fore.GREEN,
    '3': Fore.RED,
    '4': Fore.MAGENTA,
    '5': Fore.CYAN,
    '6': Fore.YELLOW,
    '7': Fore.BLACK,
    '8': Fore.GRAY,
    'f': Fore.YELLOW  # 疑似地雷标记用黄色高亮
}

2. 修复后的print_grid函数

该函数通过固定单元格宽度(3字符)保证网格对齐,同时应用颜色映射:

def print_grid(grid):
    # 打印列标题(a、b、c...类国际象棋坐标)
    print("   ", end="")
    for col_idx in range(len(grid[0])):
        print(f"{chr(ord('a') + col_idx):^3}", end="")
    print()

    # 打印每行内容,带行号(1、2、3...)
    for row_idx, row in enumerate(grid, start=1):
        print(f"{row_idx:^3}", end="")
        for cell in row:
            cell_str = str(cell)
            # 获取对应颜色,默认白色
            color = COLOR_MAP.get(cell_str, Fore.WHITE)
            # 固定3字符宽度居中显示,确保网格对齐
            print(f"{color}{cell_str:^3}", end="")
        print()

关键说明

  • autoreset=True:每次输出带颜色的文本后自动重置颜色,避免后续单元格继承错误颜色
  • 固定宽度格式化{cell_str:^3}:强制每个单元格占3个字符宽度,不管是否包含颜色代码,都能保证网格整齐,彻底解决压缩问题
  • 类国际象棋坐标生成:通过chr(ord('a') + col_idx)自动生成列标题,行号从1开始枚举,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:45:30