我们想用Python(有点像Street Fighter)来创建一个有2个玩家和2个控制器的游戏。我们有一个问题,我们不知道如何分离这两个控制器。
当我们使用1个控制器移动或攻击1个角色时,另一个角色也在移动。
这是代码:
def usecontroller():
pygame.init()
global instanceFenetrePause
for i in range(0,pygame.joystick.get_count()):
vr.listeJoysticks.append(pygame.joystick.Joystick(i))
vr.listeJoysticks[-1].init()
while vr.loopGestionClavier :
for event in pygame.event.get():
if event.type == pygame.QUIT :
instanceFenetrePause.affichage_fenetre()
if vr.loopJeu :
for x in range(0,len(vr.listeJoysticks)) :
if event.type == pygame.JOYBUTTONDOWN :
if event.button == 0 :
print ('command0')
if event.button == 1 :
print ('command1')
if event.button == 2 :
print ('command2')
if event.button == 3 :
print ('command3')
if event.button == 4 :
print ('command4')
if event.button == 5 :
print ('command5')
if event.button == 7 :
instanceFenetrePause.affichage_fenetre()
答案 0 :(得分:0)
对documentation的快速浏览显示,所有操纵杆事件都包含一个属性event.joy
,该属性应引用创建该事件的操纵杆。然后,只需使用if
语句或其他控制逻辑来确定应该移动哪个字符。我对pygame不够熟悉,无法知道event.joy
的值是什么,但我怀疑它的数值索引将与传递给pygame.joystick.Joystick
的数值索引相同。
例如,使用上面的代码:
if event.type == pygame.JOYBUTTONDOWN :
if event.button == 0 :
if event.joy == 0:
print('player 1, command0')
elif event.joy == 1:
print('player 2, command0')
if event.button == 1 :
if event.joy == 0:
print('player 1, command1')
elif event.joy == 1:
print('player 2, command1')
print ('command1')
当然可能需要修改此值以处理任意操纵杆索引,但是想法就在那里。