파이게임제로 (Pygame Zero)는 Pygame의 교육용 버전이다. Pygame의 문법이 어렵지는 않지만 아이들에게는 부담스러울 수 있다. 문법을 좀 더 쉽게 지원하여 학교의 선생님들이 쉽게 아이들을 지도할 수 있도록 만든 랩퍼(Wrapper) 모듈이다.

 

일단 매우 쉽게 접근할 수 있는 인터페이스를 만들어놔서 전문적인 게임 개발은 어렵지만 초보자가 입문하기 쉽다는 장점이 있다. Online Document에는 코딩 스크래치 다음 단계 정도의 난이도라고 한다. 그러니까 초등학생 다음 정도. 중1 정도 수준의 프로그래밍 모듈로 볼 수 있다.

 

참고로 이 모듈은 여러번 래퍼되었는데 정리하면 아래와 같다.

 

C++ SDL2 Library -> Python Pygame -> Pygame Zero

 

 

Introduction to Pygame Zero — Pygame Zero 1.2 documentation (pygame-zero.readthedocs.io)

 

Introduction to Pygame Zero — Pygame Zero 1.2 documentation

Summary We’ve seen how to load and draw sprites, play sounds, handle input events, and use the built-in clock. You might like to expand the game to keep score, or make the alien move more erratically. There are lots more features built in to make Pygame

pygame-zero.readthedocs.io

파이게임제로 설치하기

 

윈도우10에서 설치는 간단하다.

 

pip install pgzero


만약 pygame을 설치한 적이 없다면 설치해야 한다. pygame zero 자체가 pygame의 라이브러리에 이용한다. (wrapper)

pip install pygame

 

 

이제 파이게임 제로를 실행시켜보자. 파이게임 제로는 약간 다른 방식으로 실행시킬 수가 있다.

 

텍스트 에디터에 다음과 같이 작성한다. import를 할 필요는 없다.

WIDTH = 300
HEIGHT = 300

def draw():
    screen.fill((180, 50, 10))
    screen.draw.text("Hello Pygame!", topleft=(100, 100))

기본적으로 들어가야 할 정보들이 들어있다. 윈도우의 크기 def draw 함수에는 윈도우가 그릴 스크린의 정보가 들어있다.

 

텍스트 에디터를 저장하고 실행은 터미널을 열고 pgzrun 파일명.py 을 실행시키면 된다.

 

 

소스파일명을 pgzrun 에 넘겨주면 Pygame 내에서 import 하고 초기화 하는 과정을 알아서 처리해서 게임창을 실행시킨다. Pygame과 차이점은 Pygame의 초기화를 비롯하여 import 문이나 그 밖에 게임 루프나 폰트 설정 등 Pygame이라면 직접 코드를 짜야할 부분을 구현하지 않아도 된다. 교육용인 만큼 훨씬 적은 코드로 게임창을 띄울 수 있다.

 

화면에 스프라이트 출력하기

파이게임제로에서 스프라이트를 사용하려면 기본 설정된 폴더이름을 만들어서 사용한다. 현재 파이썬 소스코드 파일 아래 폴더이름을 images로 만든다. 그 안에 (파일명.png) 파일을 넣는다. 이미지파일을 불러오는 방식은 아래와 같다. 쉽게 만들려고 한 것 같은데 오히려 헷갈릴 수 있으니까 주의한다. Actor 에 넣는 매개변수가 확장자를 제외한 파일명이다.

WIDTH = 500
HEIGHT = 500

banana = Actor("banana")

def draw():
    screen.clear()
    banana.draw()

이것을 역시 pgzrun 파일명.py 로 실행시킨다. 스프라이트가 로드되면 아래와 같이 스프라이트가  top left 0,0 부근에 올라온다.

 

 

간단한 테스트 게임

간단한 테스트 게임을 작성해보자. 바나나가 화면에 랜덤으로 출현하면 클릭하는 게임이다. 클릭에 성공하면 콘솔에 NICE 문자열을 출력하고 실패하면 창은 종료한다.

 

아주 간단한 게임이지만 아이들 교육용 프로그램인 점을 감안한다.

 

from random import randint

WIDTH = 500
HEIGHT = 500

banana = Actor("banana")

def draw():
    screen.clear()
    screen.fill((20, 150, 30))
    banana.draw()
    screen.draw.text("SIMPLE TEST GAME!", topleft=(10, 50))

def on_mouse_down(pos):
    if banana.collidepoint(pos):
        print("NICE!")
        place_actor()

    else:
        print("You Failed!")
        quit()

def place_actor():
    banana.x = randint(10, WIDTH-75)
    banana.y = randint(10, HEIGHT-65)

place_actor()

on_mouse_down 은 마우스 클릭시 이벤트를 오버라이드 하는 곳이다. pos 는 마우스가 터치한 좌표를 받는 곳이다. (신경 쓸필요는 없다. 자동으로 매개변수가 입력된다) 충돌체크(collidepoint)도 하고 클릭할 때 마다 랜덤으로 새로운 바나나 좌표를 생성한다.

 

실행은 마찬가지로 pgzrun 파일명.py을 해야 한다.

 

심플 바나나 클릭

매우 심플한 게임인데 파이게임제로의 구조를 알 수 있었다. 일단 아쉽게도 한글 지원은 안되는 것 같다. 한글을 자꾸 cp 949로 인식을 하는데 unicode utf8로 인코딩을 하면 파이게임 처리기에서 계속 오류가 뜬다. # 파이썬 주석에 있는 한글까지 잡아내는 것을 보니 컴파일러와 유사하게 소스 코드에 대한 텍스트 처리를 하는 것 같다. 따라서 문법이 완전히 달라진다. 어린이를 대상으로 하는게 아니었던가??

 

프레임워크처럼 만들어놔서 기존에 파이썬을 학습한 사람들에게는 혼란 스러울 수 있는 부분이 있다.

 

이렇게도 만들 수 있구나라는 느낌이 있으니까 한번 정도 사용해보는 것도 나쁘지 않은 것 같다.

 

어른이 하기에는 별로지만 아이들이 쉽게 코딩을 경험할 수 있도록 배려한 모듈 개발자의 수고가 느껴진다.

공유하기

facebook twitter kakaoTalk kakaostory naver band