soma0sd

코딩 & 과학 & 교육

파이썬 게임 개발: Pygame 시작하기

반응형

세상에는 게임 개발을 위한 많은 게임엔진들이 있고, 그중에는 파이썬을 위한 게임 엔진들도 많습니다. 이번에는 Pygame을 사용하는 기본적인 방법을 다룹니다. 파이게임(Pygame)은 주로 2D 게임을 개발하기 위한 파이썬 패키지입니다.

파이게임은,

  • 전용 IDE(통합개발환경)이 없습니다: 대부분의 게임개발은 소스코드에디터에서 이루어지며 게임에 사용하는 이미지, 음향 등은 별도로 작업해야 합니다.
  • 하나의 창만 관리합니다: 물론 다른 GUI 패키지를 사용하여 새로운 창을 만들 수는 있지만 두개의 파이게임을 동시에 실행할 수는 없습니다.
  • 3D지원이 굉장히 빈약합니다: 예제에는 3D 랜더링한 작품들이 많이 보입니다만 굉장히 코드가 난해해지고 파이게임의 모듈이 아닌 것들을 활용하기에 게임에 필요한 자원이 급격히 증가합니다. Panda3D와 같은 3D 게임을 위한 파이썬 엔진을 사용하시는 것이 좋습니다.
  • 빌드 도구를 제공하지 않습니다: 게임을 독립실행 파일로 만들기 위해서는 PyInstaller등 별도의 파이썬 빌드도구가 필요합니다.

개발도구 및 패키지 설치

여기서는 Windows 11 환경에서 윈도우 스토어를 통해 받은 Python 3.9.9를 사용하며, 소스코드 에디터로 VS Code를 사용합니다.

다음에는 대강 새로운 폴더를 만들고 VS Code를 열었습니다. Ctrl + ` 키를 눌러 터미널을 열고 .pyenv라는 이름으로 가상환경을 생성합니다. PS >는 파워쉘(PowerShell)스크립트를 의미합니다.

PS > python -m venv .pyenv

디렉토리 이름 앞에 .을 붙이면 VS Code의 파일탐색기에서 최상단으로 가기 때문에 별로 볼일없을거 같은 디렉토리의 이름을 지을 때는 이렇게 만들고 있습니다.

이제 방금 만든 파이썬 가상환경을 실행합니다.

PS > & .pyenv/Scripts/Activate.ps1

PIP를 업데이트 한 뒤 파이게임을 설치합니다.

PS > python -m pip install --upgrade pip
PS > pip install pygame

파이게임 헬로월드

헬로월드(Hello world)는 초보일 때 소스코드 기초를 배우기 위한 것 뿐만 아니라 내가 환경을 제대로 구성했는지 확인하는 중요한 역할을 합니다. 허겁지겁 코드부터 만든 뒤 오류가 나면 설치 오류인줄 모르고 한참을 헤멜 수 있으니 새로운 개발환경을 구성한 뒤에는 꼭 헬로월드부터 해보시는 것을 추천합니다.

hello.py 파일을 만들고 아래의 내용을 복사해서 붙여넣습니다. 나무위키를 참조한 코드입니다.

import pygame
import sys
from pygame.locals import QUIT

width = 600
height = 400
white = (255, 255, 255)
black = (0, 0, 0)
fps = 30

pygame.init()

pygame.display.set_caption("Hello, world!")
displaysurf = pygame.display.set_mode((width, height), 0, 32)
clock = pygame.time.Clock()

gulimfont = pygame.font.SysFont("굴림", 70)
helloworld = gulimfont.render("Hello, world!", 1, black)
hellorect = helloworld.get_rect()
hellorect.center = (width / 2, height / 2)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    displaysurf.fill(white)
    displaysurf.blit(helloworld, hellorect)

    pygame.display.update()
    clock.tick(fps)

파이게임 예제

예제를 통해 파이게임의 기능과 구현방법을 살펴볼 수 있습니다.

예시로 aliens를 실행합니다.

from pygame.examples import aliens

aliens.main()

예제 모듈을 불러와 main()를 실행하면 게임을 실행할 수 있습니다. 몇 개의 예제는 pyopenglnumpy 패키지를 필요로 합니다.

  • aliens: 방향키와 스페이스를 사용한 우주선 격추 게임입니다.
  • arraydemo: 클릭할 때마다 조작된 이미지를 보여줍니다. S 키로 그림을 저장할 수 있습니다.
  • blit_blends: 이미지 오브젝트의 밝기를 조정합니다.
  • camera: 웹캠이 있는 경우 영상을 보여줍니다.
  • cursors: 게임 내 마우스 커서를 변경합니다.
  • dropevent: 이미지 파일의 드래그 앤 드롭 기능을 보여줍니다.
  • eventlist: 파이게임의 마우스/키보드 입력 이벤트를 확인할 수 있습니다.
  • font_viewer: 모든 시스템 글꼴를 랜더링하여 보여줍니다.
  • freetype_misc: 프리타입 글꼴을 랜더링합니다(실행함수는 run()).
  • glcube: 파이게임 안에 OpenGL 큐브를 랜더링합니다.
  • moveit: 오브젝트를 움직입니다.
  • pixelarray: 이미지 배열을 처리하는 방법을 보여줍니다.
  • stars: 클릭 지점을 중심으로 별이 흩어집니다.
  • textinput: 텍스트 입력을 받습니다.
  • vgrade: 수직 그라데이션을 numpy로 생성하고 걸린 시간을 측정합니다.
반응형
태그:

댓글

End of content

No more pages to load