So führen Sie mehrere While-Schleifen gleichzeitig in Pygame aus
In Pygame-Anwendungen ist es wichtig, die Verwendung von Blockierungsfunktionen wie time.sleep zu vermeiden () um Verzögerungen durchzuführen. Verlassen Sie sich stattdessen auf die Anwendungsschleife und Funktionen wie pygame.time.get_ticks(), um zeitbezogene Aufgaben zu verwalten.
Die Herausforderung verstehen
Im Code bereitgestellt in Bei der Abfrage versuchen mehrere while-Schleifen gleichzeitig ausgeführt zu werden, aber eine Schleife, die time.sleep() verwendet, blockiert die Ausführung der anderen.
Die Lösung: Verwendung von Pygame-Zeitfunktionen
Um Zeitverzögerungen korrekt zu handhaben, verwenden Sie pygame.time.get_ticks(), um den Zeitpunkt der Ausführung bestimmter Aktionen basierend auf der aktuellen Zeit zu berechnen. Wenn die aktuelle Zeit die berechnete Zeit überschreitet, führen Sie die Aktion aus.
Überarbeiteter Code:
<code class="python">import pygame import random from time import time pygame.init() faces = ['^-^', '^v^', '◡◠◠', "'v'", '⁀◡⁀'] display = pygame.display.set_mode((800, 600)) font = pygame.font.Font('unifont.ttf', 100) surface = font.render(random.choice(faces), 1, (0, 255, 0)) center = surface.get_rect(center=(800/2, 600/2)) next_render_time = time() run = True while run: current_time = time() for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if current_time >= next_render_time: surface = font.render(random.choice(faces), 1, (0, 255, 0)) next_render_time = current_time + random.randint(5, 10) display.fill((0, 0, 0)) display.blit(surface, center) pygame.display.flip()</code>
In diesem Code speichert die Variable next_render_time die Zeit, zu der die Gesicht sollte aktualisiert werden. Wenn die aktuelle Zeit diesen Wert überschreitet, wird ein neues Gesicht zufällig ausgewählt, gerendert und angezeigt. Dieser Ansatz ermöglicht die gleichzeitige Ausführung mehrerer Schleifen ohne Blockierung.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Blockierungen und führe mehrere Schleifen gleichzeitig in Pygame aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!