как генерировать координаты между двумя точками - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь создать свою собственную игру в шахматы и хотел бы узнать, как генерировать координаты между двумя точками.

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

Я хочу, чтобы list_coordinates имел значение:

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

Но я не уверен, как это сделать.

1 Ответ

0 голосов
/ 05 января 2019

Я не знаком с Фитоном.Поэтому я объясняю математику за этим вопросом.В шахматах есть 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) возвращает +1, если z> 0, -1, если z <0, или 0, если z = 0 и ABS (z) возвращает абсолютное значение z. </p>

Теперь 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]
...