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 la fonctionnalité continue 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 :
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 les é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 utile lorsqu'il s'agit d'intervalles de temps constants.
Exemple de code
Reportez-vous à l'extrait de code suivant pour un exemple complet illustrant l'implémentation de plusieurs boucles while dans Pygame :
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()
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3