5.1.3 멍멍이와 야옹이가 인사해요3 - 순차

이번에는 야옹이 오브젝트를 만들고, 화면에 등장시킬 차례이다. 이미 멍멍이 오브젝트로 해봤던 코딩이라 크게 어려울 것이 없다. 다만, 다음의 11번 라인의 경우, 처음보는 코드가 등장했는데, 이 속성이 무엇인지는 flip_x 라는 이름에서 직관적으로 알 수 있을 것이다. 이미 우리가 엔트리 블록코딩에서 야옹이가 멍멍이와 서로 마주보기 위해 특별히 추가되어졌던 블록["좌우 모양 뒤집기" 블록]을 기억한다면, 그 블록과 같은 역할임을 알 수 있다. 즉, x방향(수평방향, Horizontal)으로 이미지를 뒤집기 위한 속성으로 True 값을 주어 화면에 x방향으로 이미지를 뒤집어 출력해 준다.

from pgzhelper import *

TITLE = '멍멍이와 야옹이가 인사해요'
WIDTH = 480
HEIGHT = 270

dog = Actor('dog', (100, 150))
dog.scale = 0.5
cat = Actor('cat', (350, 150))
cat.scale = 0.5
cat.flip_x = True

def draw():
    screen.fill('white')
    dog.draw()
    cat.draw()

이제 남은 일은 각각의 멍멍이와 야옹이가 번갈아서 순서대로 인사말과 작별인사를 건네면 되는 것이다. 이를 코딩으로 표현하면 18~21번 라인의 4줄의 코딩이 된다.

from pgzhelper import *

TITLE = '멍멍이와 야옹이가 인사해요'
WIDTH = 480
HEIGHT = 270

dog = Actor('dog', (100, 150))
dog.scale = 0.5
cat = Actor('cat', (350, 150))
cat.scale = 0.5
cat.flip_x = True

def draw():
    screen.fill('white')
    dog.draw()
    cat.draw()
    
    dog.say_for_sec('멍멍!', 2, fontname='nanum_square')
    cat.say_for_sec('야옹~', 2, fontname='nanum_square')
    dog.say_for_sec('잘가~', 2, fontname='nanum_square')
    cat.say_for_sec('잘있어 안녕!', 2, fontname='nanum_square')

해당 코딩의 이해 역시나 직관적으로 알 수 있다. 오브젝트 내 내장된 say_for_sec 함수(메소드)를 사용해 어떤 말을 몇 초 동안 얘기할지를 코딩하면 된다. 단, mu 에디터의 기본 내장폰트에는 한글이 존재하지 않아, 한글출력을 시도하면 한글이 보이지 않는 문제가 있다. 이를 해결하기 위해 우리는 화면출력을 위한 별도의 한글폰트 사용할 수 있다.

우리는 앞서 5.1.1 장에서 언급한 것처럼, 폰트 역시도 게임에 사용되는 리소스(그림, 글자, 소리 등)이고, 그 리소스들은 항상 미리 정해진 폴더에 위치해야 한다는 것을 인지하고 있다. 폰트 폴더는 다음과 같이 에디터에 폰트 아이콘을 눌러 열 수 있고, 그 안에 필요한 한글폰트를 넣어두면 된다. Mu 에디터 커스텀 버전에서는 여러분의 편의를 위해 이미 무료 한글폰트(네이버 나눔스퀘어 폰트)가 넣어져 있을 것이고, 우리는 이를 함수 파마미터의 하나로 fontname='nanum_square' 라는 값으로 넘기기만 하면 된다.

폰트에 관해 알아둘 것이 하나 있다. 일반적으로 폰트의 종류는 크게 2가지가 있는데, 파이게임제로에서는 ttf 확장자를 갖는 폰트(True Type Font) 만 지원한다. 따라서, otf 폰트(Open Type Font)를 폰트 폴더에 넣고, 왜 안되는지 의아해 하지 않기를 바란다. 해당 내용에 대해서는 라이브러리 레퍼런스(메뉴얼)에 언급되어 있다.

이것으로 엔트리 초급책의 가장 첫 번째 예제를 파이게임제로로 코딩해 보는 것을 마치겠다. 첫 번째 예제의 실행결과는 다음과 같다.

첫 예제까지 무사히 마친 여러분께 축하를 전하며, 이이서 두번 째 예제에 도전해보자.

Last updated