조건문

Ren'Py에는 표현식의 값에 따라 실행 흐름을 바꾸는 문이 있습니다. 조건 없이 실행 위치를 옮기는 jump, call, return 문과 함께 사용할 수 있습니다.

이 페이지는 Ren'Py 스크립트 안에서 사용하는 문을 설명합니다. 게임에 삽입한 Python 코드에서는 Python의 while, if, for 문을 사용하지만, 그 안에 Ren'Py 스크립트 문을 넣을 수는 없습니다.

if 문

if 문은 Python 표현식이 참일 때 해당 블록을 실행합니다. if 절 하나, 0개 이상의 elif 절, 선택적인 else 절로 구성됩니다.

각 절은 별도의 논리적 줄에 쓰고, 그 아래에 문으로 이루어진 블록을 둡니다. if와 elif 뒤에는 표현식을 쓰며, 모든 절의 끝에는 콜론 :을 붙입니다.

예를 들면 다음과 같습니다.

if flag:
    e "플래그를 설정했어요!"
if points >= 10:
    jump best_ending
elif points >= 5:
    jump good_ending
elif points >= 1:
    jump bad_ending
else:
    jump worst_ending

if 문의 표현식은 위에서 아래로 차례로 평가합니다. 참인 표현식을 만나면 그에 해당하는 블록을 실행합니다. 블록이 끝나면 if 문 전체의 다음 문으로 넘어갑니다.

모든 표현식이 거짓이고 else 절이 있으면 else의 블록을 실행합니다.

while 문

while 문은 표현식이 True인 동안 블록을 반복 실행합니다. 예를 들면 다음과 같습니다.

$ count = 10

while count > 0:

    "발사까지 [count]초."

    $ count -= 1

"발사!"
$ lines = ["sounds/three.mp3", "sounds/two.mp3", "sounds/one.mp3"]
while lines: # evaluates to True as long as the list is not empty
    play sound lines.pop(0) # removes the first element
    pause
while True:

    "이 노래는 끝이 없어요."
    "동지 여러분, 끝없이 이어지죠."

while 문에 처음 도달했을 때와 블록 끝에 도달할 때마다 표현식을 평가합니다. 표현식이 거짓인 값을 반환하면 while 문 다음으로 넘어갑니다.

Ren'Py 스크립트에는 continue, break, for 문이 없습니다. continue와 break 대신 각각 while 루프 앞과 뒤에 둔 레이블로 점프할 수 있습니다. 위의 첫 번째 예제는 while로 간단한 for 문을 대신하는 방법을, 두 번째 예제는 리스트를 순회하는 for 문을 대신하는 방법을 보여 줍니다. 리스트 순회는 다른 언어에서 foreach라고도 합니다.

pass 문

pass 문은 블록이 필요하지만 실행할 내용이 없을 때 사용합니다. 아무 동작도 하지 않습니다.

예를 들면 다음과 같습니다.

if points >= 10:
    "아주 잘하고 있어요!"
elif points >= 1:
    pass
else:
    "상황이 그리 좋지 않네요."
# event.step() is a function that returns True while there are
# still events that need to be executed.

while event.step():
    pass