“将”走棋算法

3.1 说明

“将”的走棋算法,相对来说比较简单

  1. 如果是黑方的“将”,它只能在行数是1、2、3且列数是4、5、6标记的范围内移动
  2. 如果是红方的“将”,它只能在行数是8、9、10且列数是4、5、6标记的范围内移动

3.2 代码实现

        elif clicked_chess.name == "j":  # 将
            # 因为"将"是不能过河的,所以要计算出它们可以移动的行的范围
            row_start, row_stop = (0, 2) if team == "b" else (7, 9)
            # 有4个方向的判断
            if row - 1 >= row_start and (not map_[row - 1][col] or map_[row - 1][col].team != team):
                put_down_chess_pos.append((row - 1, col))
            if row + 1 <= row_stop and (not map_[row + 1][col] or map_[row + 1][col].team != team):
                put_down_chess_pos.append((row + 1, col))
            if col - 1 >= 3 and (not map_[row][col - 1] or map_[row][col - 1].team != team):
                put_down_chess_pos.append((row, col - 1))
            if col + 1 <= 5 and (not map_[row][col + 1] or map_[row][col + 1].team != team):
                put_down_chess_pos.append((row, col + 1))

image-20210821190247386

3.3 运行效果

img

img

Copyright © itprojects.cn 2021 all right reserved,著作权归itprojects.cn所有,由王铭东编写该文件修订时间: 2021-08-21 20:33:01