【问题标题】:how to generate coordinates between two points如何生成两点之间的坐标
【发布时间】:2018-12-01 22:37:38
【问题描述】:

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

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

我希望 list_coordinates 有值:

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

但我不知道该怎么做。

【问题讨论】:

  • 您使用哪种编程语言?当坐标既不是对角线也不是在同一行或列上时会发生什么?
  • 不清楚。找到两块相对顶点的正方形,而不是在这样的正方形内找到网格呢?
  • 当我选择移动主教时,我想生成这些坐标来检查阻碍棋子 - 因为它不能“跳过”游戏中的其他棋子。

标签: python-3.x list coordinates chess


【解决方案1】:

我不熟悉 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

现在 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]

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 2014-01-16
    • 2013-07-27
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多