Maison > développement back-end > Tutoriel Python > Comment empêcher les mouvements excessivement rapides lors de la gestion de la saisie au clavier dans Pygame ?

Comment empêcher les mouvements excessivement rapides lors de la gestion de la saisie au clavier dans Pygame ?

DDD
Libérer: 2024-12-18 01:13:10
original
619 Les gens l'ont consulté

How to Prevent Excessively Fast Movement When Handling Keyboard Input in Pygame?

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
Copier après la connexion

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
Copier après la connexion

De plus, pendant la boucle de jeu, vous décrémenterez le compteur :

if move_ticker > 0:
    move_ticker -= 1
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal