So implementieren Sie mehrere While-Schleifen gleichzeitig in Pygame
In Pygame ist es möglich, mehrere While-Schleifen gleichzeitig auszuführen, was unabhängige und ermöglicht Kontinuierliche Vorgänge innerhalb Ihres Programms.
Überwindung der Ausführungsblockierung
Im bereitgestellten Codeausschnitt entsteht das Problem durch das Vorhandensein von zwei While-Schleifen, die versuchen, gleichzeitig ausgeführt zu werden . Die zweite Schleife, die eine time.sleep()-Funktion enthält, um eine Verzögerung einzuführen, stört die Ausführung der ersten Schleife, die für die laufende Funktionalität des Programms von entscheidender Bedeutung ist.
Nutzung der Systemzeit für Verzögerungen
Anstatt sich auf time.sleep() zu verlassen, um die Ausführung eines bestimmten Codeblocks zu verzögern, wird empfohlen, das Modul pygame.time zu nutzen. Pygame.time.get_ticks() bietet Zugriff auf die Systemzeit in Millisekunden seit der Programminitialisierung.
Integration mit Schleife
Um das Blockieren einer Schleife durch eine andere zu verhindern, Erwägen Sie die Einbeziehung der folgenden Strategie:
Dieser Ansatz ermöglicht die gleichzeitige Ausführung der verzögerten Aktion mit der Primärschleife, ohne diese zu unterbrechen Ausführungsablauf.
Alternativer Ansatz mit Timer-Ereignissen
Alternativ können Sie Pygame-Timer-Ereignisse verwenden, um Aktionen in bestimmten Zeitintervallen zu planen. Diese Methode erweist sich besonders beim Umgang mit konstanten Zeitintervallen als nützlich.
Beispielcode
Im folgenden Codeausschnitt finden Sie ein vollständiges Beispiel, das die Implementierung mehrerer while-Schleifen zeigt 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()
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3