繁体   English   中英

如何在棋盘上模拟主教的运动

[英]How to model Bishop movement on a chessboard

我有一块棋盘,我想在上面模拟主教可能的动作。 我尝试了这个代码:

for c1, c2 in [(1, -1), (1, 1), (-1, -1), (-1, 1)]:
    for x, y in [range(x+c1, board_size), range(y+c2, board_size)]:
        moves.append(x, y)

但是找到所有的动作是行不通的。 然而,我不明白为什么。 它不检查所有四个方向吗?

你的逻辑是合理的,但你的执行却不是。

  1. 一半的计算必须从xy到 0(另一半从xyboard_size
  2. 使用默认步长,范围从较大值到较小值不起作用,因此您需要引入 -1 步长以从xy计数到 0
  3. 您应该使用zip()创建一个可迭代的元组集合。

这将起作用:

right_up = zip(range(x + 1, board_size), range(y - 1, -1, -1))
right_down = zip(range(x + 1, board_size), range(y + 1, board_size)) 

left_up = zip(range(x - 1, -1, -1), range(y - 1, -1, -1))
left_down = zip(range(x - 1, -1, -1), range(y + 1, board_size))

for r in (right_up, right_down, left_up, left_down):
    for new_x, new_y in r:  # add coordinates to move list

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM