Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengesan Peristiwa Klik Sprite dalam Pygame: Mengapa \"Kumpulan tidak mempunyai atribut rect\" dan Bagaimana untuk Membetulkannya?

Cara Mengesan Peristiwa Klik Sprite dalam Pygame: Mengapa \"Kumpulan tidak mempunyai atribut rect\" dan Bagaimana untuk Membetulkannya?

DDD
DDDasal
2024-11-01 01:08:02600semak imbas

How to Detect Sprite Click Events in Pygame: Why

Mengesan Peristiwa Klik Sprite

Pygame ialah perpustakaan pembangunan permainan 2D yang popular untuk Python. Ia menyediakan cara yang mudah untuk mencipta dan mengurus sprite, yang merupakan objek grafik yang boleh bergerak dan berinteraksi antara satu sama lain. Satu tugas biasa dalam pembangunan permainan ialah menentukan apabila sprite telah diklik.

Isunya

Seorang pembangun sedang cuba mengesan apabila sprite tergolong dalam kumpulan tertentu ( pygame.sprite.Group()) diklik. Mereka telah mencipta sprite yang mewakili kedudukan tetikus dan menggunakan spritecollide() untuk menguji perlanggaran antara tetikus dan sprite. Walau bagaimanapun, mereka menerima ralat yang menyatakan "Kumpulan tidak mempunyai atribut yang betul."

Penyelesaian

Isu ini berpunca daripada fakta bahawa kumpulan tidak memiliki atribut yang betul . Untuk menentukan sama ada klik tetikus telah berlaku pada sprite, kod itu sebaliknya harus mengakses atribut rect bagi sprite individu yang diklik. Coretan kod berikut menunjukkan cara untuk melakukan ini:

<code class="python">mouse_pos = pygame.mouse.get_pos()
for sprite in sprites:
    if sprite.rect.collidepoint(mouse_pos):
        # Sprite clicked</code>

Kod ini berulang melalui sprite dalam kumpulan dan menyemak sama ada kedudukan tetikus bertembung dengan atribut rect sprite. Jika perlanggaran dikesan, sprite telah diklik.

Sebagai alternatif, anda boleh menggunakan pemahaman senarai berikut untuk mendapatkan senarai sprite yang diklik:

<code class="python">mouse_pos = pygame.mouse.get_pos()
clicked_sprites = [sprite for sprite in sprites if sprite.rect.collidepoint(mouse_pos)]
if clicked_sprites:
    # One or more sprites clicked</code>

Dengan menggunakan atribut rect bagi sprite individu, kod itu boleh mengesan dengan tepat apabila sprite telah diklik dan meneruskan dengan tindakan yang diingini.

Atas ialah kandungan terperinci Cara Mengesan Peristiwa Klik Sprite dalam Pygame: Mengapa \"Kumpulan tidak mempunyai atribut rect\" dan Bagaimana untuk Membetulkannya?. 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