我正在尝试制作自己的国际象棋游戏,并且想知道如何在两点之间生成坐标。
list_coordinates = []
first_coordinate = [2, 7]
second_coordinate = [7, 2]
我希望list_coordinates具有以下值:
list_coordinates = [[3, 6], [4, 5], [5, 6], [6, 3]]
但是我不确定该怎么做。
答案 0 :(得分:0)
我不熟悉Phyton。因此,我将解释问题背后的数学原理。在国际象棋中,直线,斜线和对角线有8个方向:
您可以像这样计算两个字段[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]