„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie führe ich in Pygame mehrere While-Schleifen gleichzeitig aus?

Wie führe ich in Pygame mehrere While-Schleifen gleichzeitig aus?

Veröffentlicht am 07.11.2024
Durchsuche:388

How to Run Multiple While Loops Concurrently in Pygame?

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:

  • Bestimmen Sie das Zeitintervall, in dem der Inhalt aktualisiert werden soll.
  • Implementieren Sie eine bedingte Prüfung innerhalb der Hauptschleife, um zu beurteilen, ob die verstrichene Zeit den angegebenen Wert überschreitet Intervall.
  • Wenn das Intervall abgelaufen ist, führen Sie die erforderlichen Aktualisierungen durch und setzen Sie das Zeitintervall entsprechend zurück.

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()
Neuestes Tutorial Mehr>

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