有人可以解释这个例子代码?

By simon at 2018-02-07 • 0人收藏 • 16人看过

即时制作一个国际象棋游戏,并有困难的理解这个代码,可以 有人向我解释,请。

def enumerate_moves(x, y):

     potential_moves = [] 

     # If the piece at position (x,y) is a Knight
     if board[x][y] is "Knight":
       potential_moves.append([[x+2], [y+1]])
       potential_moves.append([[x+2], [y-1]])
       potential_moves.append([[x+1], [y+2]])
       potential_moves.append([[x+1], [y-2]])
       potential_moves.append([[x-2], [y-1]])
       potential_moves.append([[x-2], [y+1]])
       potential_moves.append([[x-1], [y+2]])
       potential_moves.append([[x-1], [y-2]])
我联合国理解代码的概念,但只是不明白这些如何 ([x-1],[y-2])是8乘8的两个可能的骑士移动尺寸的 阵列。有人可以请解释如何进行这些计算。谢谢!

3 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

骑士可以移动到一个L的形状。这是两个,超过一个。或者放下两个 然后在一个。其实,你必须考虑到我是骑士可以做的 从一个给定的点。所以左,右,上下两个。然后从那里骑士 可以过去(左或右))一个。所以你的选择是:   留下2,然后下降1   留下2,然后上1   右2,然后上1   右2,然后下1   * up2,然后离开1   * 2,然后右1   下降2,然后离开1   减2,然后右1 而不是说上下,还是留下一个在正确之后,我们将上下翻译为 分别为正,负y,左右分别为正,负 负x respectively。也就是说,在一个二维笛卡尔平面(一个网格 正如我们从代数类中所知道的那样)。这就是说,清单选项 转化为如下所示。   * [x-2][y+1]   * [x-2][y-1]   * [x+2][y-1]   * [x+2][y+1]   [y-2][y-1]   

  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
15   *
  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
38   *
  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
62 所以,举个小例子。如果骑士在999位置99999991086,我们有 像这样的情况:
  | 0 1 2 3 4 5 6 7
__|_________________
0 | K - - - - - - -
1 | - - - - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
而且,我们要去右边2,下来1([x+2][y+1]),结果会是l看 喜欢:
  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -

2018-02-07   #2

国际象棋问题值得一个国际象棋的答案。 下面是一个骑士棋盘上的可能棋步。我们选择了一个 中央宝最大限度地提高可能的移动数量。如果骑士是 在一个角落,它的运动将受到限制。 [![输入即时消息年龄描述 这里](https://i.stack.imgur.com/MJeGl.gif)(https://i.stack.imgur.com/MJeGl.gif) 如果你能想象棋博在图上的xy坐标 骑士可以移动[(x \ +(1或2)),(y \ +(2或1)] POSITI附件。你可能会认为这会产生两种不同的动作:[x +1,y +2],[ x +2,y +1]。但是有4个潜在的标志组合xy上: - x,+ y; - x, - y; + x, - y; - y,+ x,+ x,+ y。 所以有4 * 2 = 8可能的组合,你可以看到在 上图。 至于代码,我将把它作为一个练习。

2018-02-07   #3

骑士可以移动到一个L的形状。这是两个,超过一个。或者放下两个 然后在一个。其实,你必须考虑到我是骑士可以做的 从一个给定的点。所以左,右,上下两个。然后从那里骑士 可以过去(左或右))一个。所以你的选择是:   留下2,然后下降1   留下2,然后上1   右2,然后上1   右2,然后下1   * up2,然后离开1   * 2,然后右1   下降2,然后离开1   减2,然后右1 而不是说上下,还是留下一个在正确之后,我们将上下翻译为 分别为正,负y,左右分别为正,负 负x respectively。也就是说,在一个二维笛卡尔平面(一个网格 正如我们从代数类中所知道的那样)。这就是说,清单选项 转化为如下所示。   * [x-2][y+1]   * [x-2][y-1]   * [x+2][y-1]   * [x+2][y+1]   [y-2][y-1]   

  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
15   *
  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
38   *
  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
62 所以,举个小例子。如果骑士在999位置99999991086,我们有 像这样的情况:
  | 0 1 2 3 4 5 6 7
__|_________________
0 | K - - - - - - -
1 | - - - - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -
而且,我们要去右边2,下来1([x+2][y+1]),结果会是l看 喜欢:
  | 0 1 2 3 4 5 6 7
__|_________________
0 | - - - - - - - -
1 | - - K - - - - -
2 | - - - - - - - -
3 | - - - - - - - -
4 | - - - - - - - -
5 | - - - - - - - -
6 | - - - - - - - -
7 | - - - - - - - -

登录后方可回帖

Loading...