Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menjalankan Gelung Berbilang Semasa Secara serentak dalam Pygame?

Bagaimana untuk Menjalankan Gelung Berbilang Semasa Secara serentak dalam Pygame?

DDD
DDDasal
2024-11-07 05:36:02516semak imbas

How to Run Multiple While Loops Concurrently in Pygame?

Cara Melaksanakan Gelung Berbilang Semasa Secara Serentak dalam Pygame

Dalam Pygame, adalah mungkin untuk melaksanakan berbilang gelung sementara serentak, membenarkan bebas dan operasi berterusan dalam program anda.

Mengatasi Penyekatan Pelaksanaan

Dalam coretan kod yang disediakan, isu timbul daripada kehadiran dua gelung semasa cuba dijalankan pada masa yang sama . Gelung kedua, yang menggabungkan fungsi time.sleep() untuk memperkenalkan kelewatan, mengganggu pelaksanaan gelung pertama, yang penting untuk kefungsian berterusan program.

Menggunakan Masa Sistem untuk Kelewatan

Daripada bergantung pada time.sleep() untuk menangguhkan pelaksanaan blok kod tertentu, adalah disyorkan untuk memanfaatkan modul pygame.time. Pygame.time.get_ticks() menyediakan akses kepada masa sistem dalam milisaat sejak pemulaan program.

Integrasi dengan Gelung

Untuk mengelakkan sekatan satu gelung oleh yang lain, pertimbangkan untuk memasukkan strategi berikut:

  • Tentukan selang masa kandungan harus dikemas kini.
  • Laksanakan semakan bersyarat dalam gelung utama untuk menilai sama ada masa berlalu melebihi masa yang ditetapkan selang.
  • Jika selang telah berlalu, lakukan kemas kini yang diperlukan dan tetapkan semula selang masa dengan sewajarnya.

Pendekatan ini membolehkan tindakan tertunda berjalan serentak dengan gelung utama tanpa mengganggunya aliran pelaksanaan.

Pendekatan Alternatif menggunakan Acara Pemasa

Sebagai alternatif, anda boleh menggunakan acara pemasa Pygame untuk menjadualkan tindakan pada selang masa tertentu. Kaedah ini terbukti amat berfaedah apabila menangani selang masa yang tetap.

Kod Contoh

Rujuk coretan kod berikut untuk contoh lengkap yang mempamerkan pelaksanaan gelung sementara berbilang dalam Pygame:

<code class="python">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()</code>

Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Gelung Berbilang Semasa Secara serentak dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn