Обновление: я нашел решение, не используя события Pygame, но используя функцию Py_Game get_button, которая возвращает состояние кнопки (если она нажата или нет).
def find_num_action(action_list, shoot) :
# Actions : ['NOOP', 'FIRE', 'RIGHT', 'LEFT', 'RIGHTFIRE', 'LEFTFIRE']
num_action = 0
if (shoot) :
if (2 in action_list and 3 in action_list) :
num_action = 1
elif (2 in action_list) :
num_action = 4
elif (3 in action_list) :
num_action = 5
else :
num_action = 1
else :
if (2 in action_list and 3 in action_list) :
num_action = 0
elif (2 in action_list) :
num_action = 2
elif (3 in action_list) :
num_action = 3
return num_action
running = True
pygame.key.set_repeat(50, 20)
fps = 40
clock = pygame.time.Clock()
while running:
action_list = []
shoot = False
for event in pygame.event.get():
if event.type == QUIT :
running = False
shoot = mon_joystick.get_button(2)
axis = mon_joystick.get_axis(0)
if axis > 0:
action_list.append(2)
if axis < 0:
action_list.append(3)
num_action = find_num_action(action_list, shoot)
obs, reward, done, info = env.step(num_action)
clock.tick(fps)