Pygame

pygame은 python을 통해 게임을 만들 수 있도록 지원해주는 모듈이다. pygame 모듈을 사용하기 위해서는 모듈 설치가 필요하다.

cmd를 통해 설치를 하였다.

C:/ > pip install pygame

Successfully installed pygame 메세지를 본다면 설치에 성공

설치가 제대로 됐는지 확인하고 싶다면 import pygame을 작성하여 실행하였을 때 Hello from the pygame community~ 메세지가 출력된다면 제대로 설치에 성공한 것이다.

pygame 기본 구조

pygame 모듈을 사용하기 위한 기본적인 구조이다.

# 1. pygame 선언

import pygame
pygame.init()           # pygame 초기화

# 2. pygame에 사용되는 전역변수 선언

Color = (255, 255, 255)  # 하얀색(r,g,b)
size = [400, 300]
screen = pygame.display.set_mode(size)
done = False
pygame.display.set_caption("Avoid Fucking Virus")
clock = pygame.time.Clock()


#### 3. pygame 무한루프 : 게임 본체
def runGame():
    global done
    while not done:
        clock.tick(10)
        screen.fill(Color)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:  # 게임 화면 종료
                done = True
        pygame.display.flip()   # 게임 화면 업데이트


#### 4. pygame 게임 종료
runGame()
pygame.quit()
  • pygame.init()

    pygame을 사용하기 위해서 pygame을 우선 초기화(init) 시켜준다.

  • screen = pygame.display.set_mode(size)

    size에는 (a,b) 값을 받는데 a = 너비, b = 높이 이다.

    나는 width 값과 height값을 따로 쓰기 위해서 각각 변수명을 정해주었다.

  • pygame.display.set_caption(“Avoid Fucking Virus”)

    ()안에 들어갈 내용은 GUI창이 켜질 때, 창의 이름을 설정하는 라인이다.

  • clock = pygame.time.Clock()

    초당 화면을 몇 번 출력하는 가를 설정하기 위해 선언된 변수이다. milisecond 단위이며 게임에서 FPS(Frame Per Second)라고도 한다.

다음은 게임을 구동시키기 위해서 중요한 game loop를 선언한 함수 runGame()을 살펴보겠다.

  • clock.tick(10)

    위에서 Clock() 메서드를 선언한 clock 을 통해 FPS를 설정해준다. 10은 초당 10번 화면을 출력해주겠다는 의미이다.

  • screen.fill(color)

    전체 화면을 담당하는 변수인 screen에 fill() 메서드를 사용하여 화면 전체의 색깔을 채워준다.

    위에 color 변수에 rgb 값으로 흰색을 선언하였기 때문에 전체 화면은 흰색으로 채워진다.

  • pygame.event.get()

    게임 중간에 발생한 이벤트(마우스 클릭, 키보드 클릭)등을 가져와 어떠한 event 가 발생하였는지 for, if 문을 통하여 검사하는 라인이다. 사용되는 event 에 대해선 다음에 다루도록 하겠다.

  • event.type == pygame.QUIT

    event.get()을 통해 입력받은 event의 type이 QUIT인지 확인하는 라인이다. QUIT 값은 pygame이 종료되는 이벤트이다. QUIT이 맞다면 runGame의 while문이 더 이상 돌아가지 않도록 하여 게임을 강제로 종료시킨다.

  • pygame.display.flip()

    게임 화면이 계속 업데이트 될 수 있도록 해주는 라인이다. 게임 창이 계속 유지되고 지정했던 변수들이나 함수들이 계속 유지되기 위해서 게임의 메인 루프 끝에 항상 pygame.display.flip()을 사용해주어야 한다.

    • flip과 update의 차이

      -flip

      전체 surface를 업데이트 하는 것

      -update

      특정 부분만을 update 하는 것으로 pygame.display.update()처럼 ()안에 아무것도 넣지 않으면 전체 surface를 대상으로 update하게 되어 flip과 같은 기능을 하게 된다.

다음은 pygame으로 열게 된 창의 x,y 좌표이다.

x,y

맨 왼쪽 위가 (0,0)이 되고 오른쪽으로 갈 수록 x좌표 값이, 아래로 갈 수록 y좌표 값이 커지게 된다. 이를 통해 구현하고자 하는 이미지나 텍스트들의 위치를 정할 수 있다.