Pygame: key.get_pressed () no coincide con la cola de eventos

Estoy intentando elaborar controles simples para una aplicación que utiliza pygame en Python. Tengo los conceptos básicos funcionando, pero estoy golpeando una pared rara: estoy usando las teclas de flecha para controlar mi personaje. Si mantengo presionada una tecla de flecha, luego presiono otra tecla de flecha (para mover en diagonal), el personaje se mueve como se espera. Sin embargo, si suelto elsegundo tecla que presioné (mientras seguía presionando la teclaprimero tecla), el personaje deja de moverse, a pesar de que todavía estoy presionando esa primera tecla. Aquí está mi código de movimiento simple:

for event in pygame.event.get():
    if event.type == QUIT:
        pygame.quit()
        sys.exit()
    elif event.type == KEYDOWN:
        if pygame.key.get_pressed()[K_LEFT]:
            player.pos = (player.pos[0] - 2, player.pos[1])
        if pygame.key.get_pressed()[K_RIGHT]:
            player.pos = (player.pos[0] + 2, player.pos[1])
        if pygame.key.get_pressed()[K_UP]:
            player.pos = (player.pos[0], player.pos[1] - 2)
        if pygame.key.get_pressed()[K_DOWN]:
            player.pos = (player.pos[0], player.pos[1] + 2)

Ahora, yo estaba naturalmente muy confundido por esto. Así que intenté imprimir algunas líneas para depurar. En la parte superior del bucle de control principal, escribí:

print (pygame.key.get_pressed()[K_DOWN], pygame.key.get_pressed()[K_RIGHT])
print pygame.event.get()

... para generar una tupla que muestre el estado de las teclas de flecha hacia abajo y hacia la derecha, y luego mostrar la cola de eventos de pygame. Mis resultados me desconcertaron aún más. Si muevo el carácter en diagonal hacia abajo y hacia la derecha, presionando primero la tecla hacia abajo y luego la tecla derecha,entonces suelte la tecla derecha para hacer que se mueva simplemente hacia abajo, el personaje deja de moverse como antes ... pero esto se imprime en el shell:

(1, 0)
[]

Es decir, cuando yolanzamiento Con la tecla de flecha derecha y manteniendo presionada la tecla de flecha hacia abajo, pygame.key.get_pressed () entiende que la tecla de flecha hacia abajo todavía se mantiene presionada, pero no hay nada en la cola de eventos.

Además, anteriormente en el código (antes del bucle de control) estoy invocando

pygame.key.set_repeat(1, 2)

para hacer que el personaje continúe moviéndose mientras se mantiene presionada la tecla.

Cualquier ayuda será apreciada! Gracias :)

Respuestas a la pregunta(4)

Su respuesta a la pregunta