条件分岐用ステートメント link

Ren'Py には式の値に応じて制御フローを変更するいくつかのステートメントがあります (これは条件とは関係なしに制御を移動する jump, call, return ステートメントの発展版です)。

ここで紹介されているステートメントは Ren'Py スクリプトで利用できるものです。Ren'Py のゲームに組み込まれた Python のコードでは、Python の while、if、for ステートメントを利用できますが、Ren'Py スクリプトのコードでは利用できません。

if ステートメント link

if ステートメントは python 式が True ならブロックを実行します。これは 1 つの if 節と 0 以上の elif 節、任意の else 節からできています。

各節はステートメントのブロックが続く論理行上になければなりません。 if と elif 節には式が続き、全ての節はコロン : で終ります。

例:

if flag:
    e "You've set the flag!"
if points >= 10:
    jump best_ending
elif points >= 5:
    jump good_ending
elif points >= 1:
    jump bad_ending
else:
    jump worst_ending

if ステートメントの式は順番に最初から最後まで評価されます。式が True に評価されると、そのステートメントに対応するブロックが実行されます。制御がそのブロックの終端に達すると if ステートメントの後のステートメントに進みます。

全ての式の評価が False で、 else 節が存在するなら else 節に関連付けられたブロックが実行されます。

while ステートメント link

while ステートメントは式の評価が True である限りブロックを実行します。例

$ count = 10

while count > 0:

    "T-minus [count]."

    $ count -= 1

"Liftoff!"
$ 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:

    "This is the song that never terminates."
    "It goes on and on, my compatriots."

式は while ステートメントに最初に到達したときと、そのブロックの終端に制御が到達する度に評価されます。式が False を返すと while ステートメントの後のステートメントが実行されます。

Ren'Py は continue, break, for ステートメントを持ちません。 continue と break ステートメントはそれぞれ while ループの前と後に配置されたラベルへのジャンプで置き換えられます。上記の while ループの最初の例はどのように while ループで for ステートメントを置き換えるかを示しています。二つ目ではどのように(他の言語では foreach ステートメントとして知られる)リストをイテレートする for ステートメントを置き換えるかを示しています。

pass ステートメント link

pass ステートメントはブロックが必要だけれど適切なステートメントがないときに使用出来ます。これは何もしません。

if points >= 10:
    "You're doing great!"
elif points >= 1:
    pass
else:
    "Things aren't looking so good."
# event.step() is a function that returns True while there are
# still events that need to be executed.

while event.step():
    pass