Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menelurkan Berbilang Bulatan Sekaligus dalam Permainan Pygame?

Bagaimana untuk Menelurkan Berbilang Bulatan Sekaligus dalam Permainan Pygame?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-30 17:36:11950semak imbas

How to Simultaneously Spawn Multiple Circle Instances in a Pygame Game?

Melahirkan Berbilang Contoh Objek Yang Sama Secara serentak dalam Python

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.

Memahami Masalah

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.

Pilihan Penyelesaian

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.

Menggunakan Penyelesaian

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!

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