Я создаю игру и использую pyglet.input.get_joysticks()
, чтобы получить все доступные на компьютере джойстики для управления игрой.
Каждые несколько секунд я хотел бы проверить наличие новых джойстиков и разрешить им подключаться к игре.
Пока я здесь, я также хотел бы определить джойстики, которые больше не доступны, чтобы удалить их соответствующего игрока из игры.
Вот упрощенная версия того, как я пытаюсь это сделать:
class PyuicMapper(pyuic.HIDMapper):
def __init__(self):
self.joysticks = []
def find_connected_and_disconnect_hids_since_last_check(self):
joysticks = pyglet.input.get_joysticks()
new_joysticks = [js for js in joysticks if not any(js.device == js2.device for js2 in self.hids)]
removed_joysticks = [js for js in self.js if not any(js.device == js2.device for js in joysticks)]
self.joysticks += new_joysticks
return (new_joysticks, removed_joysticks)
Этот код не работает, потому что сравнение того же устройства или нет js.device == js2.device
никогда не дает True
.
Это очевидно, потому что атрибут, который я сравниваю (.device
), каждый раз отличается.
a) Могу ли я сравнить какие-либо атрибуты, чтобы определить, совпадают ли два джойстика пиглета?
или
б) Есть ли другой способ найти новые джойстики (и отключенные джойстики) с момента последней проверки?