RoNS 님의 블로그

[Pygame(파이게임)] 기본창 띄우기 본문

Pygame

[Pygame(파이게임)] 기본창 띄우기

namu999 2025. 4. 23. 12:50
728x90

'언젠가는 게임을 만들어 보고 싶다.' 라는 생각이 있다.

지금 당장 게임 회사에 취직해, 게임으로 돈을 벌고 싶다는 것까지는 아니지만,

난 단순하게 재미로 내가 만든 세계관에서 가상의 플레이어가 움직이게 하고 싶었다.

다행히도, 내가 주로 사용하는 언어인 파이썬에서 게임을 만들 수 있는 모듈인 "Pygame"이 있었기 때문에,

앞선 목표를 위해 Pygame을 공부하고자 한다!

참고 책

나는 이 책과 챗지피티, 여러 블로그들을 참고하여 공부를 하고있다.


 주피터 노트북(Jupyter Notebook)을 사용해서 코드를 실행하고 있다. 일반적인 파이썬 파일(.py)과는 조금 다르게 동작할 수 있지만, 대부분의 기능은 똑같이 사용할 수 있다.

이 글에서는 게임 창을 만들고, 그 안에 사각형 상자를 그리는 것까지 해볼 것이다.

 

pygame 을 사용하기위해서는 pygame을 내 환경에 설치해야한다.

!pip install pygame

(참고로 나는 2.5.1버전을 사용하고 있다.)

 

우선 창 만들기다. 전체코드는 아래와 같다.

import pygame


pygame.init()
pygame.display.set_caption("START!")

#스크린 정의 (가로 800, 세로 600)
screen = pygame.display.set_mode((800,600))

#clock 만들기 (초당 프레임 조절)
clock = pygame.time.Clock()


##게임 반복 구간
done = False
while not done:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      done=True

  #스크린 채우기
  screen.fill((255,255,255))

  #화면 업데이트
  pygame.display.flip()
  clock.tick(60)
    
pygame.quit()

게임 창을 만들기 위한 사전 준비인데도 생각보다 코드가 길다. 하나씩 알아보자.

  • pygame.init()은 파이게임에서 사용할 모든 기능(화면,소리,이벤트 등)을 한 번에 초기화하는 함수로, 파이게임을 실행할 때 꼭 필요한 함수이다.
  • pygame.display.set_caption("START!")에서는 화면창의 이름을 "START!"로 설정했다.
  • pygame.time.Clock().tick(60) 은 화면 업데이트 속도를 말한다. 60은 1초당 60번 화면이 업데이트가 된다는 걸 의미한다(FPS라고도 한다.). 코드에서는 pygame.time.Clock()를 clock으로 변수로 저장한 후, 사용했다.
  • screen.fill()은 화면을 하나의 색으로 채울 수 있도록 한다. (RGB값을 사용하기 때문에, (255,255,255)는 하얀색이다.)
  • pygame.display.flip(). 모든 변경사항을 화면에 보여준다.

게임창이 떠있는 동안은 while 반복문 안에서의 코드만이 게임을 작동시킨다. 게임창에서 키보드나 마우스, 심지어 창닫기 버튼까지 이곳에서 하나하나 이벤트마다 일어나야 할 일을 설정해 주어야 한다.

  • pygame.event.get()는 해당 반복에서 일어난 모든 이벤트들을 불러온다.
  • pygame.QUIT은 그 많은 이벤트들 중 하나로, (창닫기 버튼을 눌러) 게임창을 끄려 했을때의 이벤트 타입이다.

때문에, 창닫기 버튼을 눌렀을때, while 반복문이 끝나고, pygame.quit()으로 코드가 끝난다.

코드 실행했을때 게임창

마지막으로 사각형 하나만 더 그려보자.

  #스크린 채우기
  screen.fill(WHITE)

  pygame.draw.rect(screen,(255,0,0),[400,200,10,10],0)

screen.fill() 아래에 위 코드를 작성해보자.

빨간색(255,0,0)으로 x좌표 400, y좌표 200에 크기 10x10으로 속이 모두 칠해진(0) 사각형이다.

사각형 추가

그런데 뭔가 이상하다. y좌표가 200이었는데, 화면 중앙을 기준(y=300)으로 아래가 아니라 위에 사각형이 위치한다.

이것은 화면의 y좌표축이 위에서 아래 방향으로 되어 있기 때문이다.

좌표축 예시

이 점을 유의해서 이제 본격적으로 pygame 공부를 시작하자.

728x90