条件分岐用ステートメント 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