Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menjalankan Berbilang Semasa Gelung Secara serentak dalam Pygame?
Dalam Pygame, adalah perkara biasa untuk melaksanakan berbilang tugasan secara serentak. Walau bagaimanapun, isu biasa timbul apabila cuba menjalankan berbilang gelung sementara secara serentak, kerana satu gelung mungkin menghalang orang lain daripada melaksanakan. Artikel ini menangani cabaran ini dan menyediakan penyelesaian untuk membolehkan berbilang gelung berjalan dengan lancar.
Dalam coretan kod yang disediakan, dua gelung sementara digunakan:
Isu berlaku kerana gelung kedua mengandungi operasi menyekat (time.sleep()). Ini menghalang gelung pemprosesan acara utama daripada dijalankan, yang berpotensi menyebabkan atur cara menjadi tidak bertindak balas.
Menggantikan kaedah menyekat time.sleep() dengan ukuran masa Pygame sistem menangani isu tersebut. Pygame menyediakan fungsi, pygame.time.get_ticks(), yang mengembalikan bilangan milisaat sejak permulaan Pygame. Dengan menggunakan fungsi ini, anda boleh mengira dan menjejak selang masa untuk gelung kemas kini muka tanpa menyekat gelung lain.
Berikut ialah versi diubah suai bagi kod yang menggunakan ini penyelesaian:
<code class="python">import random import pygame import pygame.freetype # Initialize pygame and game variables face = ['^-^', '^v^', '◠◡◠', "'v'", '⁀◡⁀'] faceDisplay = pygame.freetype.Font('unifont.ttf', 100).render(random.choice(face), 1, (0, 255, 0)) screen = pygame.display.set_mode((800, 600)) run = True # Variable used to track next face update time next_render_time = 0 # Main game loop while run: # Handle events (quit, keyboard input, etc.) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False # Calculate current time current_time = pygame.time.get_ticks() # Check if enough time has passed since the last face update if current_time >= next_render_time: # Update the displayed face and calculate the next update time faceDisplay = pygame.freetype.Font('unifont.ttf', 100).render(random.choice(face), 1, (0, 255, 0)) next_render_time = current_time + random.randint(5, 10) * 1000 # Generate random time interval # Clear the screen, draw the updated face, and flip the display screen.fill((0, 0, 0)) screen.blit(faceDisplay, (screen.get_width() // 2, screen.get_height() // 2)) pygame.display.flip()</code>
Dengan menggunakan sistem pengukuran masa Pygame, kod yang diubah suai ini membenarkan gelung pemprosesan acara utama dan gelung kemas kini muka beroperasi serentak tanpa sebarang gangguan.
Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Berbilang Semasa Gelung Secara serentak dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!