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

如何在自定义棋盘的指定坐标位置打印'X'

如何在自定义棋盘的指定坐标位置打印'X'

嘿,我来帮你搞定这个问题!你现在的困境在于,当前的棋盘是用固定的字符串columna = "| | | |"来打印的,每次输出都是空格子,没法动态修改某个位置的内容。咱们换个思路,用二维列表来存储棋盘的状态,这样就能轻松修改指定位置的内容,再根据这个列表生成要打印的棋盘啦。

下面是修改后的完整代码,我会一步步给你解释:

# 先定义棋盘大小,这里假设是3x3,你可以根据需求调整
BSIZ = 3
PLAYER_1 = "Player 1"

def set_board_up(stones_per_player=4):
    # 初始化棋盘:用二维列表存储每个格子的状态,初始都是空格
    board = [[" " for _ in range(BSIZ)] for _ in range(BSIZ)]
    curr_player = PLAYER_1
    
    # 定义棋盘的分隔线
    fila = "+---+" * BSIZ
    
    # 打印初始空棋盘
    print(fila)
    for row in board:
        # 根据当前行的内容动态生成列字符串
        columna = "| " + " | ".join(row) + " |"
        print(columna)
        print(fila)
    
    end = False
    # 获取玩家输入的坐标
    i,j=input(f"{curr_player}, select valid coords ( i j ) for your stone: ").split()
    i = int(i)
    j = int(j)
    
    valid_coords = False
    while not valid_coords:
        # 验证坐标是否在1~BSIZ范围内(玩家输入的是1-based的坐标)
        if i < 1 or i > BSIZ or j < 1 or j > BSIZ:
            print("The coords you have selected are not valid, please select valid coords:")
            i, j = input().split()
            i = int(i)
            j = int(j)
        else:
            valid_coords = True
    
    # 把1-based坐标转换成列表的0-based索引,修改对应位置为'X'
    board[i-1][j-1] = 'X'
    
    # 重新打印更新后的棋盘
    print("\nUpdated board:")
    print(fila)
    for row in board:
        columna = "| " + " | ".join(row) + " |"
        print(columna)
        print(fila)

# 调用函数测试效果
set_board_up()

关键改进点说明:

  • 用二维列表存储棋盘:board = [[" " for _ in range(BSIZ)] for _ in range(BSIZ)],每个元素代表一个格子的状态,初始都是空格,这样我们可以直接修改任意位置的内容。
  • 动态生成每行内容:不再用固定的columna,而是用"| " + " | ".join(row) + " |"把每行的元素拼接成带分隔符的字符串,格子里的内容(空格或X)会自动显示出来。
  • 坐标转换:玩家输入的是1-based的坐标(比如1,1对应第一个格子),而列表索引是0-based的,所以要减1才能对应到正确的位置:board[i-1][j-1] = 'X'。
  • 重新打印棋盘:修改完棋盘状态后,重新打印一次,就能看到X出现在指定位置啦!

这样你就能轻松控制棋盘上每个位置的显示内容了,后续如果要加更多功能(比如玩家交替下棋、判断胜负)也会更方便~

备注:内容来源于stack exchange,提问作者AGG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 12:54:30