Как использовать 2 контроллера в игре (Python) - PullRequest
0 голосов
/ 08 мая 2019

Мы хотим создать игру с 2 игроками и 2 контроллерами с Python (что-то вроде Street Fighter).У нас проблема, мы не знаем, как разделить 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()

1 Ответ

0 голосов
/ 08 мая 2019

Быстрый просмотр документации показывает, что все события джойстика включают атрибут 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')

Это, конечно, вероятно, потребуется изменить для обработки произвольного индекса джойстика, но идея есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...