如何在两点之间生成坐标

时间:2018-12-01 22:37:39

标签: python-3.x list coordinates chess

我正在尝试制作自己的国际象棋游戏,并且想知道如何在两点之间生成坐标。

list_coordinates = []
first_coordinate = [2, 7]
second_coordinate = [7, 2]

我希望list_coordinates具有以下值:

list_coordinates = [[3, 6], [4, 5], [5, 6], [6, 3]]

但是我不确定该怎么做。

1 个答案:

答案 0 :(得分:0)

我不熟悉Phyton。因此,我将解释问题背后的数学原理。在国际象棋中,直线,斜线和对角线有8个方向:

enter image description here

您可以像这样计算两个字段[x1,y1]和[x2,y2]之间的方向:

delta_x = x2 - x1
delta_y = y2 - y1

现在检查两个字段是位于行,线还是对角线上:

if delta_x = 0 or delta_y = 0 or ABS(delta_x) = ABS(delta_y) then
  dir = [SGN(delta_x), SGN(delta_y)]
else
  dir = 0
end if
带有SGN(z)的

如果z> 0则返回+1,如果z <0则返回-1,如果z = 0则返回0 并且ABS(z)返回z的绝对值。

现在dir是从字段[x1,y1]到[x2,y2]或dir = 0的方向,因为这两个字段不在同一行,线或对角线上。要查找两个字段之间的所有字段,可以使用循环:

[x , y] = [x1, y1] 
loop 
  [x, y] = [x, y] + dir    ' a field between the two given fields.
until [x, y] = [x2, x2]