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

2024-06-26 13:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个董事会,我想在上面模拟主教可能的行动。我尝试了以下代码:

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)

但要找到所有的动作是行不通的。然而,我不明白为什么。不是四个方向都查过了吗?你知道吗


Tags: 代码inboardforsizerange方向董事会
1条回答
网友
1楼 · 发布于 2024-06-26 13:24:56

你的逻辑是正确的,但你的执行不是。你知道吗

  1. 一半的计算必须从xy到0(另一半从xyboard_size
  2. 使用默认步长,范围不能从大到小,因此需要引入-1步长,以便从xy计数到0
  3. 您应该使用zip()来创建一个可iterable元组集合。你知道吗

这将起作用:

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

相关问题 更多 >