Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengesan Klik Tetikus pada Sprite Pygame?

Bagaimana untuk Mengesan Klik Tetikus pada Sprite Pygame?

DDD
DDDasal
2024-12-15 07:53:09923semak imbas

How to Detect Mouse Clicks on Pygame Sprites?

Mengesan Klik Tetikus pada Sprite Pygame

Dalam Pygame, mengesan klik tetikus pada sprite ialah tugas biasa untuk permainan interaktif. Untuk mencapai matlamat ini, anda perlu melakukan beberapa langkah dalam gelung utama permainan anda:

  1. Dapatkan semula semua acara menggunakan pygame.event.get() dan semak acara MOUSEBUTTONDOWN atau MOUSEBUTTONUP.
  2. Untuk acara MOUSEBUTTONUP, dapatkan kedudukan kursor tetikus menggunakan pygame.mouse.get_pos().
  3. Buat senarai semua sprite yang terletak di bawah kursor tetikus dengan mengulangi senarai sprite anda dan menggunakan rect.collidepoint().

Berikut ialah contoh coretan yang mempamerkan langkah ini:

while ... # main loop
  # get all events
  ev = pygame.event.get()

  # proceed events
  for event in ev:
    # handle MOUSEBUTTONUP
    if event.type == pygame.MOUSEBUTTONUP:
      pos = pygame.mouse.get_pos()
      clicked_sprites = [s for s in sprites if s.rect.collidepoint(pos)]
      # do something with the clicked sprites...

Sebagai alternatif, anda boleh menyemak tetikus kedudukan kursor dan keadaan butang secara langsung, tetapi pendekatan ini memerlukan pengendalian bendera yang teliti untuk mengelakkan tindakan berulang:

if pygame.mouse.get_pressed()[0] and mysprite.rect.collidepoint(pygame.mouse.get_pos()):
  print ("You have opened a chest!")

Atas ialah kandungan terperinci Bagaimana untuk Mengesan Klik Tetikus pada Sprite 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