我正在创建游戏,并且正在使用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)是否可以比较任何属性以确定两个pyglet游戏杆是否相同?
或
b)自上次检查以来,还有其他方法可以找到任何新的操纵杆(和断开的操纵杆)吗?