반응형

안녕하세요! 

python으로도 게임을 만들 수 있다는 사실을 알고 계신가요?

오늘은 pygame이라는 게임을 만들 수 있는 모듈을 가지고

파이썬으로 간단한 게임을 만들어 보도록 하겠습니다.

이번 포스팅은 pygame설치 방법과 간단한 사용 방법을 알아보도록 하겠습니다.

 

 Pygame 설치
pip install pygame

위의 명령어로 pygame을 설치해 주면 간단하게 설치가 완료됩니다.

vscode로 사용시

pygame을 검색후 아래와 같이

Pygame Snippets 의 install 버튼을 눌러 설치해도 됩니다. (저는 이미 설치가 되어있기 때문에 install 표시가 없습니다.)

그 후 잘 설치가 되었는지 알아보려면

명령 터미널에

python -m pygame.examples.aliens

입력 후

위의 창과 같은 게임이 실행된다면 잘 설치가 된 것입니다. ㅎㅎ

쉬어갈겸 게임 한번 씩 해보시길 바랍니다ㅎㅎ

방향키(← →)로 움직이고, 스페이스로 적을 공격하여 없앨 수 있습니다.

pygame 게임 제작 프로세스

pygame을 사용하여 게임을 만들 때 크게 4단계를 거쳐 진행됩니다.

1. game 시작 선언

2. 게임 윈도우(창) 설정 - 프레임, 컬러, 크기 등등

3. 게임에서 실행될 오브젝트 설정 및 게임루프에서 실행될 이벤트(함수) 설정

4. 게임 루프 설정 (게임이 진행되는 동안 실행되는 루프 및 게임종료 설정)

 

1. game 시작 선언

pygame의 시작을 알리는 init()을 선언한 후 게임 코드들을 작성하게 됩니다.

import sys
import pygame
from pygame.locals import *

## pygame 기능 사용을 시작하는 명령어 ##
pygame.init()

 

2. 게임 윈도우(창) 설정

그 후 게임이 시작될 기본 창을 생성하고

크기, 배경색, 초당 프레임 등등을 설정해 줍니다.

크기는 pygame.display.set_mode()를 사용하여 (가로,세로) 튜플을 넣어주면 생성됩니다.

초당 프레임 단위는 .tick()을 사용하여 보통 100이내로 설정해 줍니다. (적정선 30~60정도)

그 이상이되면 게임 용량이 커질 뿐만이 아니라 너무 빨리 지나가 사람 눈으로 확인하기 어려워집니다.

색상을 설정할 때는 RGB코드를 써서 색상을 지정해 줍니다. (ex: 검은색RGB코드 -> (0,0,0)) 

RGB 색상 코드 차트를 확인하려면 아래의 링크에서 확인해 주세요.

https://www.rapidtables.org/ko/web/color/RGB_Color.html

 

RGB 색상 코드 차트 🎨

RGB 색상 코드 차트 RGB 색상 선택기 | RGB 색상 코드 차트 | RGB 색 공간 | RGB 색상 형식 및 계산 | RGB 색상 표 RGB 색상 선택기 RGB 색상 코드 차트 색상 에 커서를 갖다 대면 아래의 16 진수 및 10 진수 색

www.rapidtables.org

게임 창의 이름을 설정하고 싶을 땐

pygame.display.set_caption("윈도우 이름")을 사용하여 설정할 수 있습니다.

## 초당 프레임 단위 설정 ##
FPS = 30
FramePerSec = pygame.time.Clock()

## 컬러 세팅 ##
BLUE = (0,0,255)
RED = (255,0,0)
GREEN = (0,255,0)
BLACK = (0,0,0)
WHITE = (255,255,255)

## 게임 창 설정 ##
GameDisplay = pygame.display.set_mode((640,440))
GameDisplay.fill(WHITE) #하얀색으로 배경 채우기
pygame.display.set_caption("PYGAME Example") # 창 이름 설정

 

 

3. 게임에서 실행될 오브젝트 설정 및 게임루프에서 실행될 이벤트(함수) 설정

도형 생성

pygame.draw.shape(surface, color, pointlist(centerpoint), width)로 도형을 그릴 수 있습니다.

각각의 파라미터는 아래와 같습니다.

  • surface: 어느 게임 창에 위치시킬 것인지 설정
  • color: 오브젝트 색상 설정
  • pointlist: 튜플형식으로 각 포인트(각)의 좌표를 설정
  • start_point, end_point, centerpoint: 시작 좌표, 끝점, 가운데 좌표
  • width: 도형 테두리 굵기 지정

도형은 아래와 같이 생성할 수 있습니다.

# 선
pygame.draw.line(surface, color, start_point, end_point, width)
pygame.draw.lines(surface, color, closed, pointlist, width)

# 면
pygame.draw.polygon(surface, color, pointlist, width)

# 원
pygame.draw.circle(surface, color, center_point, radius, width)

# 타원
pygame.draw.ellipse(surface, color, bounding_rectangle, width)

# 직사각형
pygame.draw.rect(surface, color, rectangle_tuple, width)
#rectangle_tuple은 (사각형시작x좌표,사각형시작y좌표,가로길이,세로길이) 의 튜플로 이루어져 있음

간단하게 동그라미, 세모(선3개이용), 직사각형, 타원의 4가지 도형을 그려보겠습니다.

#도형 예제
pygame.draw.circle(GameDisplay,BLACK,(100,50),30)

pygame.draw.line(GameDisplay,BLUE,(200,20),(180,60))
pygame.draw.line(GameDisplay,BLUE,(200,20),(220,60))
pygame.draw.line(GameDisplay,BLUE,(180,60),(220,60))

pygame.draw.rect(GameDisplay,RED,(300,20,50,50),2)

pygame.draw.ellipse(GameDisplay,GREEN,(400,20,80,50),2)

 

4. 게임 루프 설정

마지막으로 게임 윈도우가 열리고 시작될 동작을 게임 루프로 설정해 실행해 주면 됩니다.

현재는 이벤트가 설정된 함수가 따로 있지는 않습니다.

게임을 종료하고 싶을 때는

pygame.quit()을 사용해 종료해 줍니다.

##Game loop 설정: 게임이 진행되는 동안 실행되는 이벤트(함수)들 만들기##

# 게임을 종료시키는 함수
while True:
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    FramePerSec.tick(FPS)

 

전체 코드
import sys
import pygame
from pygame.locals import *

## pygame 기능 사용을 시작하는 명령어 ##
pygame.init()

## 초당 프레임 단위 설정 ##
FPS = 30
FramePerSec = pygame.time.Clock()

## 컬러 세팅 ##
BLUE = (0,0,255)
RED = (255,0,0)
GREEN = (0,255,0)
BLACK = (0,0,0)
WHITE = (255,255,255)

## 게임 창 설정 ##
GameDisplay = pygame.display.set_mode((640,440))
GameDisplay.fill(WHITE) #하얀색으로 배경 채우기
pygame.display.set_caption("PYGAME Example") # 창 이름 설정

## 선(line) 및 도형 그리기 ##
# 파라미터 설명
# pygame.draw.shape(surface, color, pointlist(centerpoint), width)
# surface: 어느 게임 창에 위치시킬 것인지 설정
# color: 오브젝트 색상 설정
# pointlist: 튜플형식으로 각 포인트(각)의 좌표를 설정
# start_point, end_point, centerpoint: 시작 좌표, 끝점, 가운데 좌표
# width: 도형 테두리 굵기 지정
"""
# 선
pygame.draw.line(surface, color, start_point, end_point, width)
pygame.draw.lines(surface, color, closed, pointlist, width)

# 면
pygame.draw.polygon(surface, color, pointlist, width)

# 원
pygame.draw.circle(surface, color, center_point, radius, width)

# 타원
pygame.draw.ellipse(surface, color, bounding_rectangle, width)

# 직사각형
pygame.draw.rect(surface, color, rectangle_tuple, width)
#rectangle_tuple은 (사각형시작x좌표,사각형시작y좌표,가로길이,세로길이) 의 튜플로 이루어져 있음
"""
#도형 예제
pygame.draw.circle(GameDisplay,BLACK,(100,50),30)

pygame.draw.line(GameDisplay,BLUE,(200,20),(180,60))
pygame.draw.line(GameDisplay,BLUE,(200,20),(220,60))
pygame.draw.line(GameDisplay,BLUE,(180,60),(220,60))

pygame.draw.rect(GameDisplay,RED,(300,20,50,50),2)

pygame.draw.ellipse(GameDisplay,GREEN,(400,20,80,50),2)



##Game loop 설정: 게임이 진행되는 동안 실행되는 이벤트(함수)들 만들기##

# 게임을 종료시키는 함수
while True:
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    FramePerSec.tick(FPS)

 

참고자료

파이게임 공식 홈페이지

 

A Newbie Guide to pygame — pygame v2.1.1 documentation

or How I learned to stop worrying and love the blit. Pygame is a python wrapper for SDL, written by Pete Shinners. What this means is that, using pygame, you can write games or other multimedia applications in Python that will run unaltered on any of SDL's

www.pygame.org

 

미리보기

다음에 만들어볼 미니게임 미리보기 입니다ㅎㅎ

반응형

+ Recent posts