Pygame

[Pygame(파이게임)] 그림판

namu999 2025. 5. 7. 14:27
728x90

이제 플레이어가 활동할 맵이나, 플레이어의 모습을 만들 것이다.

이것은 " screen.blit(image, (x, y)) " 형태로 임의로 가져온 이미지를 사용해도 되지만, 이왕 게임을 만드는 김에 모두 파이게임으로 만들고 싶었다.
때문에, 넘파이 행렬 형태로, 각 맵과 그 외(캐릭터, 배경)을 미리 만들고, 이후에 게임에 삽입하는 과정을 거칠 것이다.


이 글에서는 아래와 같은 파이게임 화면에서 맵을 (또 다른 파이게임 화면에서) 만들 수 있다는 것만 간단히 소개만 하려고 한다.

그림판은 아래에서 직접 실행해 볼 수 있다! (검은 화면(로딩)이 20초정도 걸릴 수 있다)

오른쪽 상자 각 역할 설명

  • 첫번째 박스: 펜 굵기 설정
  • 두번째 박스: 색 설정 (원 왼쪽의 버튼으로 RGB값을 10씩 세부적으로 조절 가능)
  • ex) 갈색(155, 80, 0) 만들기: 1. 빨간 원 클릭 (255,0,0) 2. 빨간 원 왼쪽의 두번째 버튼 10번 클릭 (155,0,0) 3. 파란 원 왼쪽의 첫번째 버튼 8번 클릭 (155,80,0)
  • 세번째 박스: 스포이드 (한번 클릭 하고 화면의 색이 있는 위치 클릭)
  • 네번째 박스: 리셋

 

이 코드에서 주요한 역할을 한 변수들은 다음과 같다.

pygame.MOUSEBUTTONDOWN # event.type

######################################
x, y = pygame.mouse.get_pos() # 마우스위치

######################################
pygame.mouse.get_pressed()[0] # 마우스 왼쪽 클릭

######################################
pygame.mouse.get_pressed()[2] # 마우스 오른쪽 클릭

 pygame.MOUSEBUTTONDOWN 으로 마우스의 클릭을 인식할 수 있다. 이 이벤트가 발생했을때, 마우스의 위치에 따라 굵기 변경,색 변경,스포이드,리셋 을 각각 실행한다.

pygame.mouse.get_pos()로 색이 칠해질 칸의 위치를 알 수 있다.  넘파이 행렬에서 같은 위치의 행,열에 펜의 색 만큼을 저장하면 된다.

pygame.mouse.get_pressed()[0] 는 왼쪽 클릭을 의미한다. 왼쪽 클릭으로 색이 칠해지도록 했다.

pygame.mouse.get_pressed()[2] 는 오른쪽 클릭을 의미한다. 오른쪽 클릭으로 색이 지워지도록 했다.

(즉, 이 파이 게임에선 사용하지 않았지만 pygame.mouse.get_pressed()[1] 는 마우스 휠 클릭을 의미한다.)

임의로 그려본 맵의 예시

다음 글에서는 그린 맵을 적용시켜 보자

728x90