목차

이전 항목

업적

다음 항목

저장하기, 불러오기, 롤백하기

링크


원문 보러 가기
오역 신고하기
Created using Sphinx.

명령문 동등어구

각 명령문에는 그에 상응하는 파이썬 코드가 있어 렌파이 스크립트를 파이썬에서 작성할 수 있습니다. 이 때 렌파이 명령문에 상응하는 파이썬 코드는 파이썬 함수이거나 명령문과 같은 기능을 하는 코드 패턴일 수도 있습니다.

대사

캐릭터 객체를 함수로 호출하면 say 문을 파이썬에서도 사용할 수 있습니다. 다음 예제 코드를 사용하면 같은 대사를 두 번 표시합니다:

e "Hello, world."

$ e("Hello, world.")

해설을 표시할 때도 같은 방법을 사용하면 됩니다. 이 때는 narrator 캐릭터를 사용하면 됩니다. 캐릭터를 호출할 때 interact 키워드 인수를 공급할 수도 있습니다. interact 가 False면 캐릭터의 대사창이 표시되며, 그 후 인터렉션이 실행되기 전에 함수가 값을 반환하고 종료됩니다.

이렇게 캐릭터와 함수의 객체가 동등한 점은 여러 방식으로 활용 가능합니다. 파이썬 함수를 하나 정의해 그 함수를 캐릭터 객체 대신 사용할 수도 있습니다. 예를 들어, 아래 함수는 두 캐릭터 가운데 어떤 캐릭터를 선택할지 변수 하나로 결정합니다.

define lucy_normal = Character("루시")
define lucy_evil = Character("사악한 루시")

init python:

    def l(what, **kwargs):
        if lucy_is_evil:
            lucy_evil(what, **kwargs)
        else:
            lucy_normal(what, **kwargs)

label start:

    $ lucy_is_evil = False

    l "보통 때에 난 평범한 사람이야."

    $ lucy_is_evil = True

    l "하지만 가끔은 진짜 성질이 뻗쳐!"

이렇게 사용되는 함수는 알 수 없는 키워드 인수를 무시하거나 캐릭터 함수에 인수를 전달합니다. 덕분에 렌파이가 캐릭터를 호출할 때마다 추가 키워드 인수를 추가하더라도 게임은 정상 작동할 것입니다.

renpy.say(who, what, interact=True)

say문의 동등문이다.

who
대사를 말하는 캐릭터, 내래이터라면 None, 혹은 캐릭터 이름을 나타내는 문자열이다. 캐릭터 이름을 나타내는 문자열인 경우, 대사를 말하는 Character 를 생성하기 위해 say() 를 사용한다.
what
대사가 적힌 문자열. 이 문자열에서는 % 기호가 붙은 치환자가 작동한다.
interact
참이라면 렌파이가 대사를 표시하는 동안 플레이어의 입력을 기다린다. 거짓이라면 렌파이가 대사를 표시하나 인터렉션을 수행하지 않는다.

이 함수는 자주 사용되지 않습니다. 다음 세 가지 행이 모두 같은 기능을 하기 때문입니다.

e "Hello, world."
$ renpy.say(e, "Hello, world.")
$ e("Hello, world.")

선택지

menu 문에는 그에 상응하는 파이썬 함수가 있습니다.

사용자에게 선택지를 표시한다. items 는 두 가지 항목으로 이루어진 튜플의 리스트이어야 한다. 튜플에 있는 항목 가운데 첫 번째 항목은 선택지에 적힐 텍스트이어야 하며, 두 번째 항목은 해당 선택지가 선택되었을 때 반환하는 값이다. 이 값이 None이라면 첫 번째 항목은 선택지에 대한 설명문으로 사용된다.

이 항목은 많은 인수를 받으나, 일부만 문서로 작성되었다. items 외에 모든 인수는 키워드 인수로서 입력해야 한다.

interact
거짓값이면 선택지가 표시되나 인터렉션이 실행되지 않는다.
screen
선택지를 표시할 때 사용할 스크린의 이름.
renpy.display_menu(items, interact=True, screen="choice")

사용자에게 선택지를 표시한다. items 는 두 가지 항목으로 이루어진 튜플의 리스트이어야 한다. 튜플에 있는 항목 가운데 첫 번째 항목은 선택지에 적힐 텍스트이어야 하며, 두 번째 항목은 해당 선택지가 선택되었을 때 반환하는 값이다. 이 값이 None이라면 첫 번째 항목은 선택지에 대한 설명문으로 사용된다.

이 항목은 많은 인수를 받으나, 일부만 문서로 작성되었다. items 외에 모든 인수는 키워드 인수로서 입력해야 한다.

interact
거짓값이면 선택지가 표시되나 인터렉션이 실행되지 않는다.
screen
선택지를 표시할 때 사용할 스크린의 이름.

이미지 나타내기

image, scene, show, hide 문에는 그에 상응하는 파이썬 함수가 있습니다.

renpy.get_at_list(name, layer='master')

layer 레이어에서 name 태그를 지닌 이미지에 적용된 트랜스폼 리스트를 반환한다. 적용된 트랜스폼이 전혀 없다면 빈 리스트를 반환하며, 지정한 이미지가 화면에 없다면 None을 반환한다.

renpy.hide(name, layer='master')

레이어에서 이미지를 제거한다. hide 문과 같은 기능을 하는 파이썬 함수이다.

name
제거할 이미지의 이름. 이미지 태그만 적으면 그 태그가 지정된 이미지는 모두 사라진다. (이미지 이름은 고려하지 않는다)
layer
이 함수가 작동할 레이어의 이름.
renpy.image(name, d)

이미지를 정의한다. image 문과 같은 기능을 하는 파이썬 함수이다.

name
이미지 이름으로 사용할 문자열.
d
이미지 이름에 연결시킬 디스플레이어블.

이 함수는 init 블럭 안에서만 실행된다. 게임이 시작된 이후에 이 함수를 실행하면 에러가 발생한다.

renpy.layer_at_list(at_list, layer='master')

show layer layer at at_list 명령문과 같은 기능을 하는 파이썬 동등문.

renpy.scene(layer='master')

layer 에서 모든 디스플레이어블을 제거한다. 표시할 이미지 이름을 받지 않은 scene 문과 같은 기능을 하는 파이썬 함수이다.

이미지 이름을 적은 scene 문은 renpy.scene 함수 다음에 renpy.show() 를 호출하는 것과 똑같이 작동한다.

scene bg beach

위의 명령문은 다음 코드와 똑같이 작동한다.

$ renpy.scene()
$ renpy.show("bg beach")
renpy.show(name, at_list=, []layer='master', what=None, zorder=0, tag=None, behind=[])

레이어에 이미지를 나타낸다. show 문과 프로그램적으로 동등하다.

name
표시할 이미지의 이름. 문자열.
at_list
이미지에 적용할 트랜스폼의 리스트. at 속성과 같은 기능을 한다.
layer
이미지가 나타날 레이어의 이름. 문자열. onlayer 속성과 같은 기능을 한다.
what
None이 아니면 이미지 대신에 나타날 (디스플레이어블. show expression 문과 같은 기능을 한다.) what 매개변수에 값을 지정하면 name 은 이미지에 지정될 태그로 사용된다.
zorder
정수. zorder 속성과 같은 기능을 한다. None이라면 기존에 존재하는 zorder 값이 유지되며, 그 외에는 0으로 설정된다.
tag
문자열. 화면에 나타난 이미지의 이미지태그를 정의할 때 사용된다. as 속성과 같은 기능을 한다.
behind
문자열 목록. 여기서 주어진 태그를 가진 이미지 뒤에 이미지를 표시한다. behind 속성과 같은 기능을 한다.
renpy.show_layer_at(at_list, layer='master')

show layer layer at at_list 명령문과 같은 기능을 하는 파이썬 동등문.

트랜지션

with 문에 상응하는 파이썬 함수는 renpy.with_statement 함수입니다.

renpy.with_statement(trans, always=False)

트랜지션을 발생시킨다. with 문과 같은 기능을 하는 파이썬 함수이다.

trans
트랜지션.
always
True면 사용자가 트랜지션 기능을 사용하지 않을 때에도 트랜지션이 항상 발생한다.

이 함수는 사용자가 마우스를 클릭하거나 엔터 키를 눌러서 트랜지션을 종료했을 때는 True를, 그 외의 경우에는 False를 반환한다.

Jump

jump 문의 동등어구는 renpy.jump 함수입니다.

renpy.jump(label)

현재 명령문을 종료시키고 입력 받은 레이블로 제어 흐름을 이동시킨다.

Call

call 문의 동등어구는 renpy.call 함수입니다.

renpy.call(label, *args, **kwargs)

현재 렌파이 명령문을 종료시키고, label 로 이동한다. jump가 종료한다면, 제어 흐름이 현재 명령문 뒤에 따라 나오는 명령문으로 전송된다.

renpy.return_statement()

렌파이가 현재 렌파이 수준의 call을 반환한다.