> 백엔드 개발 > 파이썬 튜토리얼 > 파이게임에서 스프라이트에 대한 마우스 클릭을 감지하는 방법은 무엇입니까?

파이게임에서 스프라이트에 대한 마우스 클릭을 감지하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-25 17:46:10
원래의
381명이 탐색했습니다.

How to Detect Mouse Clicks on Sprites in Pygame?

Pygame 마우스 클릭 감지

Pygame에서 스프라이트에 대한 마우스 클릭을 감지하려면 메인 루프 동안 수동 검사가 필요합니다. 이 기능을 구현하는 방법은 다음과 같습니다.

메인 루프 접근 방식:

  1. pygame.event.get()을 사용하여 모든 이벤트를 검색합니다.
  2. MOUSEBUTTONUP 또는 MOUSEBUTTONDOWN을 확인하세요. event.
  3. pygame.mouse.get_pos()를 사용하여 마우스 커서 위치를 획득합니다.
  4. 스프라이트 목록을 반복하여 마우스 커서가 스프라이트의 사각형과 충돌하는지 확인합니다.
  5. 스프라이트가 실행된 경우 의도한 작업을 수행합니다. 클릭했습니다.

예제 코드:

while ...:
    ev = pygame.event.get()
    for event in ev:
        if event.type == pygame.MOUSEBUTTONUP:
            pos = pygame.mouse.get_pos()
            clicked_sprites = [s for s in sprites if s.rect.collidepoint(pos)]
            # Perform action on clicked sprites
로그인 후 복사

참고: Pygame은 이 시나리오에 대한 이벤트 기반 프로그래밍을 제공하지 않습니다.

대안 접근 방식:

최적은 아니지만 마우스 커서 위치와 누른 키 상태를 확인할 수도 있습니다. 그러나 이 접근 방식에는 지속적인 인쇄를 방지하기 위해 추가 플래그 처리가 필요합니다.

handled = False
while ...:
    if pygame.mouse.get_pressed()[0] and mysprite.rect.collidepoint(pygame.mouse.get_pos()) and not handled:
        print("You have opened a chest!")
        handled = pygame.mouse.get_pressed()[0]
로그인 후 복사

Sprite 클래스 메서드:

사용자 정의 MySprite 클래스 내에 메서드를 정의하여 다음을 수행할 수도 있습니다. 마우스 클릭 확인:

class MySprite(Sprite):
    def is_clicked(self):
        return pygame.mouse.get_pressed()[0] and self.rect.collidepoint(pygame.mouse.get_pos())
로그인 후 복사

위 내용은 파이게임에서 스프라이트에 대한 마우스 클릭을 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿