До сих пор я сравнивал массивы с одной переменной, например. позиция игрока:Как сравнить массивы (не точные совпадения)
for position in ships:
if player_location_x > position[0]-100 and player_location_x < position[0]+100 and player_location_y > position[1]-100 and player_location_y < position[1]+100:
#Do something (e.g. draw bullets between the two locations)
Как бы это расширить, чтобы сравнить значения самих массивов, например. сравнивая значения x и y «кораблей», чтобы проверить их расстояние друг к другу, а также сравнивая значения x и y между «судами» и «more_ships»?
ships = numpy.array([
[
shuttle_class.npc_x[0],
shuttle_class.npc_y[0],
shuttle_class.img,
shuttle_class.hp
],
[
shuttle_class.npc_x[1],
shuttle_class.npc_y[1],
shuttle_class.img,
shuttle_class.hp
],
[
shuttle_class.npc_x[2],
shuttle_class.npc_y[2],
shuttle_class.img,
shuttle_class.hp
]
])
more_ships = numpy.array([
[
shuttle_class.npc_x[3],
shuttle_class.npc_y[3],
shuttle_class.img,
shuttle_class.hp
],
[
shuttle_class.npc_x[4],
shuttle_class.npc_y[4],
shuttle_class.img,
shuttle_class.hp
],
[
shuttle_class.npc_x[5],
shuttle_class.npc_y[5],
shuttle_class.img,
shuttle_class.hp
]
])
Одним из улучшений, которые вы можете сделать, является использование квадрантов, так что каждый раз, когда что-то движется, вы пересчитываете свою позицию, что довольно дешево, а затем, чтобы проверить расстояние, вам нужно только проверить объекты, которые находятся в той же секции сетки как вы. Может быть, лучше с numpy, но по тому, как вы это делали в данный момент, я знаю, что делаю это до того, как это дает огромное увеличение скорости :) – Peter
Правильно ли я понимаю ваш вопрос: у вас есть корабли (массивы x1, y1) и more_ships (массивы x2, y2), и для каждой возможной комбинации вы хотите попарно «x1-x2» и «y1-y2»? – VBB
@VBB Да, это правильно – pytheron