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

国际象棋程序开发:如何引用二维数组索引并赋值给变量

解决国际象棋坐标转数组索引的方案

核心思路

不用写大量elif,直接通过字符映射+简单计算把棋盘坐标(比如a1、h8)转成二维数组的索引:

  • 列部分(a-h):用字典或ASCII码计算转成0-7的索引
  • 行部分(1-8):因为你的数组第一行对应棋盘第8行、最后一行对应棋盘第1行,所以行索引用8 - 数字值计算即可

修正原代码的小错误

你的self.coor最后一行里d1和e1之间少了逗号,修正后:

self.coor =  [['a8','b8','c8','d8','e8','f8','g8','h8'],
              ['a7','b7','c7','d7','e7','f7','g7','h7'],
              ['a6','b6','c6','d6','e6','f6','g6','h6'],
              ['a5','b5','c5','d5','e5','f5','g5','h5'],
              ['a4','b4','c4','d4','e4','f4','g4','h4'],
              ['a3','b3','c3','d3','e3','f3','g3','h3'],
              ['a2','b2','c2','d2','e2','f2','g2','h2'],
              ['a1','b1','c1','d1','e1','f1','g1','h1']]

实现坐标转索引的代码

修改movePiece函数,加入坐标解析逻辑(如果是类方法记得加self参数):

def movePiece(self):
    moveFrom = input("From:").strip()
    # 拆分坐标的列(字母)和行(数字)
    col_char = moveFrom[0].lower()
    row_num = int(moveFrom[1])
    
    # 方案1:用字典映射列索引
    col_map = {'a':0, 'b':1, 'c':2, 'd':3, 'e':4, 'f':5, 'g':6, 'h':7}
    y = col_map[col_char]
    # 方案2:用ASCII码计算列索引(更简洁,无需维护字典)
    # y = ord(col_char) - ord('a')
    
    # 计算数组的行索引
    x = 8 - row_num
    
    # 现在可以用x、y访问数组元素,用于棋子移动逻辑
    print(f"坐标{moveFrom}对应数组索引:x={x}, y={y}")
    print(f"数组中对应的值:{self.coor[x][y]}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:25:35