Saisie au clavier dans Pygame : gestion des événements de frappe
Lors du développement d'un jeu simple à l'aide de Pygame 1.9.2, vous pouvez rencontrer un problème où un le vaisseau contrôlé par les touches fléchées se déplace excessivement vite. Ce problème provient de l'enregistrement continu des pressions sur les touches pendant que les touches sont enfoncées.
Pour résoudre ce problème, au lieu de vous fier à pygame.key.get_pressed(), qui récupère les touches actuellement enfoncées, envisagez de gérer les événements de frappe. L'événement KEYDOWN capture les touches enfoncées dans l'image actuelle, garantissant que les mouvements ne se produisent qu'une seule fois par frappe.
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
Cependant, si un mouvement continu est souhaité, vous pouvez implémenter des limitations pour restreindre la fréquence des mouvements. Une approche consiste à définir une fréquence d'images maximale ou à utiliser un compteur pour limiter les mouvements tous les quelques ticks.
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
De plus, pendant la boucle de jeu, vous décrémenterez le compteur :
if move_ticker > 0: move_ticker -= 1
Cela garantit que le mouvement se produit uniquement toutes les 10 images.
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!