Maison  >  Article  >  développement back-end  >  Comment exécuter plusieurs boucles While simultanément dans Pygame ?

Comment exécuter plusieurs boucles While simultanément dans Pygame ?

DDD
DDDoriginal
2024-11-07 05:36:02438parcourir

How to Run Multiple While Loops Concurrently in Pygame?

Comment implémenter plusieurs boucles While simultanément dans Pygame

Dans Pygame, il est possible d'exécuter plusieurs boucles While simultanément, permettant des boucles indépendantes et opérations continues au sein de votre programme.

Surmonter le blocage de l'exécution

Dans l'extrait de code fourni, le problème provient de la présence de deux boucles while tentant de s'exécuter en même temps . La deuxième boucle, qui intègre une fonction time.sleep() pour introduire un délai, interfère avec l'exécution de la première boucle, ce qui est crucial pour le fonctionnement continu du programme.

Utiliser le temps système pour le délai

Au lieu de compter sur time.sleep() pour retarder l'exécution d'un bloc de code spécifique, il est recommandé d'exploiter le module pygame.time. Pygame.time.get_ticks() permet d'accéder à l'heure système en millisecondes depuis l'initialisation du programme.

Intégration avec Loop

Pour éviter le blocage d'une boucle par une autre, envisagez d'incorporer la stratégie suivante :

  • Déterminez l'intervalle de temps auquel le contenu doit être mis à jour.
  • Mettez en œuvre une vérification conditionnelle dans la boucle principale pour évaluer si le temps écoulé dépasse le temps spécifié. intervalle.
  • Si l'intervalle est écoulé, effectuez les mises à jour nécessaires et réinitialisez l'intervalle de temps en conséquence.

Cette approche permet à l'action retardée de s'exécuter simultanément avec la boucle principale sans perturber son flux d'exécution.

Approche alternative utilisant des événements de minuterie

Vous pouvez également utiliser des événements de minuterie Pygame pour planifier des actions à des intervalles de temps spécifiques. Cette méthode s'avère particulièrement bénéfique lorsqu'il s'agit d'intervalles de temps constants.

Exemple de code

Référez-vous à l'extrait de code suivant pour un exemple complet illustrant l'implémentation de plusieurs boucles while dans Pygame :

<code class="python">import pygame
import random

# Initialize Pygame
pygame.init()

# Define screen dimensions
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

# Define some faces
faces = ['^-^', '^v^', '◠◡◠', "'v'", '⁀◡⁀']

# Define the current face
current_face = random.choice(faces)

# Set up the font
font = pygame.font.SysFont('Arial', 100)

# Render the face
face_surface = font.render(current_face, True, (0, 255, 0))

# Get the center of the screen
center_x = screen_width // 2
center_y = screen_height // 2

# Set up the main loop
running = True
while running:

    # Process events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Calculate the next time the face should be updated
    next_update_time = pygame.time.get_ticks() + randint(5000, 10000)

    # If the time has come to update the face, do it
    if pygame.time.get_ticks() >= next_update_time:
        current_face = random.choice(faces)
        face_surface = font.render(current_face, True, (0, 255, 0))

    # Draw everything to the screen
    screen.fill((0, 0, 0))
    screen.blit(face_surface, (center_x - face_surface.get_width() // 2, center_y - face_surface.get_height() // 2))
    pygame.display.update()</code>

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!

Déclaration:
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