Dalam pertanyaan pengaturcaraan ini, seorang pengekod pemula yang mencari panduan dalam mencipta permainan menggunakan enjin Pygame Python menghadapi cabaran. Objektifnya adalah untuk melahirkan berbilang contoh kalangan, memberikan mata apabila mereka mengklik. Walau bagaimanapun, pembangun menghadapi isu di mana kalangan seterusnya mengatasi yang sebelumnya.
Isu ini timbul disebabkan oleh sifat gelung permainan. Fungsi seperti sleep() dan pygame.time.wait() tidak mengawal masa dengan berkesan dalam gelung aplikasi. Semasa permainan diteruskan, bulatan sebelumnya dikosongkan daripada skrin sebelum bulatan baharu boleh dilukis.
Untuk menangani masalah ini, terdapat dua pilihan penyelesaian utama:
1. Pemijahan Berasaskan Masa
Gunakan pygame.time.get_ticks() untuk mengukur masa berlalu dalam gelung. Tentukan selang masa untuk penciptaan objek dan telurkan objek baharu apabila masa yang ditentukan telah berlalu. Kaedah ini membolehkan kawalan tepat ke atas masa pemijahan objek.
2. Modul Acara Pygame
Gunakan pygame.time.set_timer() untuk mencipta acara tersuai dalam baris gilir acara, mencetuskan penciptaan objek. Pendekatan ini memberikan fleksibiliti yang lebih besar dalam menjadualkan pemijahan objek dengan selang masa tertentu.
Contoh Pemijahan Berasaskan Masa:
import pygame, random pygame.init() window = pygame.display.set_mode((300, 300)) class Circle: def __init__(self): ... object_list = [] time_interval = 200 # 200 milliseconds == 0.2 seconds next_object_time = 0 run = True clock = pygame.time.Clock() while run: clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False current_time = pygame.time.get_ticks() if current_time > next_object_time: next_object_time += time_interval object_list.append(Circle()) window.fill(0) for circle in object_list[:]: ...
Modul Acara Pygame Contoh:
import pygame, random pygame.init() window = pygame.display.set_mode((300, 300)) class Circle: def __init__(self): ... object_list = [] time_interval = 200 # 200 milliseconds == 0.2 seconds timer_event = pygame.USEREVENT+1 pygame.time.set_timer(timer_event, time_interval) run = True clock = pygame.time.Clock() while run: clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False elif event.type == timer_event: object_list.append(Circle())
Dengan melaksanakan salah satu daripada penyelesaian ini, anda boleh menghasilkan berbilang contoh objek yang sama secara serentak dalam permainan Pygame anda, membolehkan pengalaman permainan yang lebih dinamik dan menarik.
Atas ialah kandungan terperinci Bagaimana untuk Menelurkan Berbilang Bulatan Sekaligus dalam Permainan Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!