"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo ejecutar varios bucles while simultáneamente en Pygame?

¿Cómo ejecutar varios bucles while simultáneamente en Pygame?

Publicado el 2024-11-07
Navegar:412

How to Run Multiple While Loops Concurrently in Pygame?

Cómo implementar múltiples bucles while simultáneamente en Pygame

En Pygame, es posible ejecutar múltiples bucles while simultáneamente, lo que permite procesos independientes y operaciones continuas dentro de su programa.

Superación del bloqueo de ejecución

En el fragmento de código proporcionado, el problema surge de la presencia de dos bucles while que intentan ejecutarse al mismo tiempo . El segundo bucle, que incorpora una función time.sleep() para introducir un retraso, interfiere con la ejecución del primer bucle, que es crucial para la funcionalidad continua del programa.

Utilización del tiempo del sistema para el retraso

En lugar de confiar en time.sleep() para retrasar la ejecución de un bloque de código específico, se recomienda aprovechar el módulo pygame.time. Pygame.time.get_ticks() proporciona acceso a la hora del sistema en milisegundos desde la inicialización del programa.

Integración con Loop

Para evitar el bloqueo de un bucle por otro, considere incorporar la siguiente estrategia:

  • Determinar el intervalo de tiempo en el que se debe actualizar el contenido.
  • Implementar una verificación condicional dentro del bucle principal para evaluar si el tiempo transcurrido excede el especificado intervalo.
  • Si el intervalo ha transcurrido, realice las actualizaciones necesarias y restablezca el intervalo de tiempo en consecuencia.

Este enfoque permite que la acción retrasada se ejecute simultáneamente con el bucle principal sin interrumpir su flujo de ejecución.

Enfoque alternativo utilizando eventos de temporizador

Alternativamente, puede emplear eventos de temporizador de Pygame para programar acciones en intervalos de tiempo específicos. Este método resulta particularmente beneficioso cuando se trata de intervalos de tiempo constantes.

Código de ejemplo

Consulte el siguiente fragmento de código para obtener un ejemplo completo que muestra la implementación de múltiples bucles while en 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()
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3