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

蛇梯棋棋盘打印函数异常:多余符号与行列错误修复求助

修复蛇梯棋棋盘打印功能的异常问题

问题概述

开发蛇梯棋棋盘打印功能时遇到以下异常:

  • 特定位置(如玩家在20、CPU在18)会出现多余的*符号,棋盘布局偏移
  • 出现重复数字的额外行(如29重复10次)
  • 本该显示0-9的最后一行缺失

需求回顾:

  • 棋盘从99到90起始,行尾为偶数时,下一行从该行尾数字-10开始到该行尾数字-1结束(例如第二行80-89)
  • 玩家位置用*、CPU用#标记,位置重合时用@
  • 每轮清空终端后重新打印,需恢复旧位置的数字

错误原因分析

  1. 行生成逻辑错误:原代码未正确控制奇偶行的数字排列方向,导致最后一行(0-9)未生成,反而多出错误行
  2. 位置替换索引计算错误:未准确映射数字到棋盘的行/列位置,导致符号替换到错误格子,出现多余标记
  3. 输出格式化缺失:未对棋盘元素做对齐处理,数字位数差异引发布局偏移

修复后的代码(Python实现)

import os

def print_board(player_pos, opponent_pos):
    # 跨平台清空终端
    os.system('cls' if os.name == 'nt' else 'clear')
    
    # 初始化棋盘:按规则生成10行数字
    board = []
    for row_idx in range(10):
        base_num = 99 - row_idx * 10
        if row_idx % 2 == 0:
            # 偶数行(第0、2、4、6、8行):从base_num递减到base_num-9
            current_row = list(range(base_num, base_num - 10, -1))
        else:
            # 奇数行(第1、3、5、7、9行):从base_num-9递增到base_num
            current_row = list(range(base_num - 9, base_num + 1))
        board.append(current_row)
    
    # 替换玩家与CPU位置标记
    for r in range(10):
        for c in range(10):
            cell_num = board[r][c]
            if cell_num == player_pos and cell_num == opponent_pos:
                board[r][c] = '@'
            elif cell_num == player_pos:
                board[r][c] = '*'
            elif cell_num == opponent_pos:
                board[r][c] = '#'
    
    # 格式化打印棋盘
    for row in board:
        # 每个元素居中对齐,占3字符宽度
        formatted_cells = [f"{item:^3}" for item in row]
        print('|'.join(formatted_cells))
        print('-' * 39)  # 分隔线:3*10 + 9个分隔符 = 39字符长度

# 测试场景:玩家在20,CPU在18
print_board(20, 18)

修复要点说明

  1. 正确的行生成规则:通过row_idx奇偶性控制数字排列方向,确保最后一行(第9行)自然生成0-9的顺序,解决最后一行缺失问题
  2. 精准位置映射:直接遍历棋盘每个格子对比数字,避免索引计算错误,消除多余符号和偏移
  3. 统一格式化输出:用^3居中对齐每个元素,保证棋盘布局整齐,不会因数字位数差异导致错位
  4. 跨平台终端清空:适配Windows和类Unix系统的终端清空命令,保证每轮刷新效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:52:44