Pygame ialah perpustakaan Python yang digunakan secara meluas yang direka untuk pembangunan permainan. Satu aspek penting dalam pembangunan permainan ialah mengesan perlanggaran antara objek. Dalam artikel ini, kami akan menumpukan pada teknik untuk mengesan perlanggaran antara objek segi empat tepat dan imej dalam Pygame.
Untuk bermula, kami akan menggunakan pygame.Rect objects dan colliderect() untuk mengesan perlanggaran antara segi empat tepat mengikat dua objek. Segi empat tepat terikat menentukan sempadan objek dalam ruang dua dimensi.
Pembina pygame.Rect mengambil hujah untuk mentakrifkan kedudukan dan dimensi segi empat tepat, seperti yang dilihat di bawah:
rect1 = pygame.Rect(x1, y1, w1, h1) rect2 = pygame.Rect(x2, y2, w2, h2)
di mana x1, y1, w1 dan h1 mewakili kedudukan dan dimensi segi empat tepat pertama, dan x2, y2, w2 dan h2 mewakili segi empat tepat kedua.
Untuk menyemak perlanggaran, kami menggunakan kaedah colliderect() bagi objek Rect, yang mengembalikan True jika segi empat tepat bersilang dan False sebaliknya. Begini cara anda boleh melaksanakan ini:
if rect1.colliderect(rect2): # Handle collision logic here
Jika anda mempunyai imej (diwakili sebagai objek pygame.Surface), anda boleh mendapatkan segi empat tepat terikatnya menggunakan get_rect( ) kaedah. Walau bagaimanapun, adalah penting untuk menetapkan kedudukan imej menggunakan hujah kata kunci, kerana segi empat tepat yang dikembalikan sentiasa bermula pada (0, 0):
player_rect = player_img.get_rect(topleft = (x, y)) for i in range(len(things_cor)): thing_rect = things_added[i].get_rect(topleft = things_cor[i])
Dengan segi empat tepat ini, anda boleh melakukan ujian perlanggaran antara pemain dan item seperti berikut:
if player_rect.colliderect(thing_rect): # Handle collision logic here
Dalam kod yang disediakan coretan, anda mempunyai gelung sementara yang berjalan secara berterusan dalam fungsi game_loop(). Jika anda ingin memperkenalkan jeda atau kelewatan dalam gelung, anda boleh menggunakan fungsi pygame.time.get_ticks(). Ia mengembalikan bilangan milisaat yang berlalu sejak pygame.init() dipanggil.
Berikut ialah contoh cara menggunakan pygame.time.get_ticks() untuk membuat kelewatan:
passed_time = pygame.time.get_ticks() # passed time in milliseconds start_time = 100 * 1000 # start time in milliseconds (100 seconds) # When the elapsed time reaches or exceeds the start time, execute this logic if passed_time >= start_time: # Execute game logic here, such as moving objects x += x_change
Pendekatan ini membolehkan anda mengawal masa acara dengan tepat dalam gelung permainan.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Perlanggaran Antara Segi Empat dan Imej dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!