파이게임의 collidepoint() 메서드

Maxim Maeder 2023년6월21일
파이게임의 collidepoint() 메서드

이 기사에서는 파이게임을 사용하여 Python에서 텍스트를 그리는 방법을 보여줍니다. 이것은 작동하는 Python 게임 창에 대한 완전한 코드가 아닙니다.

베어본 작업 프레임워크에 관심이 있다면 이 문서를 확인하십시오.

Pygame에서 collidepoint() 메서드 사용

rect 클래스의 collidepoint() 메서드에서 주어진 점이 rect 내부에 있는지 테스트합니다. 다음으로 마우스를 가져가면 색상이 변경되는 버튼을 만듭니다.

함수에 x 및 y 좌표를 별도로 제공하거나 튜플 또는 목록과 같은 반복 가능 항목에 제공할 수 있습니다.

통사론:

rect.collidepoint(x, y)
rect.collidepoint((x, y))

이제 collidepoint()를 사용하여 마우스를 가져갈 때 표면의 색상을 변경합니다. 이를 설정하기 위해 다음 작업을 수행합니다.

  1. collidepoint() 메서드를 사용하여 rect를 정의하여 시작합니다.
  2. 지정된 정사 너비와 높이로 표면을 계속 만듭니다.
  3. 메인 루프 전에 마지막으로 할 일은 두 개의 변수를 만드는 것입니다. 하나는 일반 색상을 나타내고 다른 하나는 호버 색상을 나타냅니다.
# Before Main loop
rect = pygame.Rect(10, 10, 100, 60)
btn_surface = pygame.Surface((rect.width, rect.height))

normal_color = (200, 100, 100)
hover_color = (100, 200, 100)

메인 루프에서 마우스 위치를 가져와 rect 내부에 있는지 확인합니다.

  1. 마우스 위치를 가져와 위에서 만든 rectcollidepoint() 메서드에 전달합니다.
  2. 마우스가 위에 있는 것으로 판명되면 호버 색상으로 버튼 표면을 채웁니다. 다른 모든 경우에는 일반 색상으로 채웁니다.
  3. 마지막으로 표면을 화면에 블리팅합니다.
# In the Main loop
if rect.collidepoint(pygame.mouse.get_pos()):
    btn_surface.fill(hover_color)
else:
    btn_surface.fill(normal_color)

screen.blit(btn_surface, rect)

완전한 코드:

# Imports
import sys
import pygame

# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))

# Before Main loop
rect = pygame.Rect(10, 10, 100, 60)
print(rect.width)
btn_surface = pygame.Surface((rect.width, rect.height))

normal_color = (200, 100, 100)
hover_color = (100, 200, 100)

# Game loop.
while True:
    screen.fill((20, 20, 20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # In the Main loop
    if rect.collidepoint(pygame.mouse.get_pos()):
        btn_surface.fill(hover_color)
    else:
        btn_surface.fill(normal_color)

    screen.blit(btn_surface, rect)

    pygame.display.flip()
    fpsClock.tick(fps)

출력:

Pygame에서 collidepoint() 메서드 사용

작가: Maxim Maeder
Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub

관련 문장 - Pygame Function