Heim > Backend-Entwicklung > Python-Tutorial > Wie vermeide ich Blockierungen und führe mehrere Schleifen gleichzeitig in Pygame aus?

Wie vermeide ich Blockierungen und führe mehrere Schleifen gleichzeitig in Pygame aus?

Patricia Arquette
Freigeben: 2024-11-06 05:39:03
Original
1080 Leute haben es durchsucht

How to Avoid Blocking and Run Multiple Loops Simultaneously in Pygame?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage