Conditional Statements
Ren'Py includes several statements that can alter control flow based on expression values. This is in addition to the jump, call and return statements, which transfer control unconditionally.
Note that is pages discusses statements that can be used inside Ren'Py script. Python embedded in a Ren'Py game uses the Python while, if, and for statements, but can't embed Ren'Py script statements.
If Statement
The if
statement conditionally executes a block of statements if a Python
expression is true. It consists of an if
clause, zero or more elif
clauses, and an optional else
clause.
Each clause should be on its own logical line, followed by a block of
statements. The if and elif clauses are followed by an expression,
while all clauses end with a colon :
.
Examples are:
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
The expressions in the if statement are evaluated in order, from first to last. When an expression evaluates to true, the block corresponding to that statement is executed. When control reaches the end of the block, it proceeds to the statement following the if statement.
If all expressions evaluate to false, the block associated with
the else
clause is executed, if the else
clause is present.
While Statement
The while
statement executes a block of statements while an expression
evaluates True. For example:
$ 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."
The expression is evaluated when while statement is first reached, and then each time control reaches the end of the block. When the expression returns a false value, the statement after the while statement is executed.
Ren'Py does not have continue, break, or for statements. Continue and break statements can be replaced by jumps to labels placed before or after the while loop, respectively. The first example of a while loop, above, shows how a while loop can replace a simple for statement. The second shows how it can replace a for statement which iterates through a list (also known as a foreach statement in other programming languages).
Pass Statement
The pass
statement can be used when a block is required, but no
statement is suitable. It does nothing.
For example:
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