J'utilise la bibliothèque pygame. Ce qui suit est un code pseudo pour ma gestion d'événements pour le joueur:Mouvement fluide du lecteur dans pygame
#generates multiple events for keys that are held down
pygame.key.set_repeat(30,30)
for event in pygame.event.get()
nextPos = currentPos
if(keyUp):
if event.key == w :
key_w = false
#do the same for s, a and d
if(keyDown):
if event.key == w:
key_w = true
#same for s,a and d
if(key_w):
#update nextPos
#do same for key_s, key_a and key_d
currentPos = nextPos
Le problème est que, parfois, quand je déplace ma souris sur l'écran, et je suis appuyé sur une touche en même temps, lors du traitement des événements de la souris, les événements de la touche sont mis en file d'attente, et ces multiples pressions de touches sont exécutées ensemble, de sorte que le joueur semble sauter d'une grande distance.
Ce problème n'est pas causé si je ne bouge pas du tout la souris.
même si j'interroge une fois par image, cela fonctionne bien jusqu'à ce que je bouge la souris. Quand je commence à bouger la souris et à appuyer sur la touche en même temps, le joueur reste bloqué à la même position. Après 4-5 secondes, il recommence à se déplacer selon les touches que j'avais appuyées précédemment. – Karan
Ok, c'est partiellement résolu. J'ai retiré mousemotion de la file d'attente des événements en utilisant pngame.event.set_blocked. Mais maintenant je veux utiliser mouseclick pour tirer des balles (c'est un jeu de tir). Cela provoque le même problème, bien que dans ce cas, comme le nombre d'événements provoqués par les touches de souris est faible, le joueur saute une petite distance – Karan