Saisie au clavier dans Pygame : gestion des pressions sur les touches
Dans votre jeu, le vaisseau se déplace en continu lorsque la touche fléchée gauche ou droite est maintenue enfoncée , ce qui rend difficile le contrôle de son mouvement. Voyons comment résoudre ce problème.
Problème d'origine :
Votre code utilise pygame.key.get_pressed() pour vérifier les touches actuellement enfoncées. Cependant, cette approche peut conduire à un mouvement trop rapide du navire puisque plusieurs événements sont générés pour une seule pression sur une touche alors que la touche est maintenue enfoncée.
Solution :
Au lieu de vous fier à get_pressed(), pensez à utiliser les événements fournis par Pygame. Plus précisément, surveillez l'événement KEYDOWN, qui indique qu'une touche a été enfoncée sur l'image en cours. Cela vous permet de détecter le moment où une touche est initialement enfoncée et de répondre en conséquence.
events = pygame.event.get() for event in events: if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: location -= 1 if event.key == pygame.K_RIGHT: location += 1
Prise en charge du mouvement continu :
Si vous souhaitez que le navire se déplace en continu pendant qu'un est maintenue enfoncée, vous pouvez implémenter une limitation de débit. Cela implique de définir une limite sur la fréquence à laquelle le mouvement peut se produire.
move_ticker = 0 keys = pygame.key.get_pressed() if keys[K_LEFT]: if move_ticker == 0: move_ticker = 10 location -= 1 if location == -1: location = 0 if keys[K_RIGHT]: if move_ticker == 0: move_ticker = 10 location+=1 if location == 5: location = 4
Pour suivre la limitation de taux, la variable move_ticker est décrémentée à chaque image. Il est réinitialisé à 10 lorsqu'une touche est enfoncée, ce qui permet un mouvement toutes les 10 images.
if move_ticker > 0: move_ticker -= 1
En adoptant ces techniques, vous pouvez affiner la gestion de la saisie au clavier dans votre jeu, permettant un contrôle et une mouvement plus fluide de votre navire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!