Условные инструкции
Ren'Py включает в себя несколько инструкций, которые могут изменять поток управления в зависимости от значений выражений. Это дополнение к инструкциям jump, call и return, которые передают управление безусловно.
Обратите внимание, что на этой странице рассматриваются инструкции, которые могут быть использованы внутри скрипта Ren'Py. Python, встроенный в игру на Ren'Py, использует питоновские инструкции while, if и for, но не может встраивать в себя инструкции скрипта Ren'Py.
Инструкция if
Инструкция if условно выполняет блок инструкций, если выражение Python истинно. Она состоит из ветви if, нуля или более ветвей 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 вычисляются по порядку, от первого к последнему. Когда выражение оценивается как истинное, выполняется блок, соответствующий этой инструкции. Когда управление достигает конца блока, оно переходит к инструкции, следующей за инструкцией if.
Если все выражения оцениваются как ложные, выполняется блок, связанный с ветвью else, если ветвь else присутствует.
Инструкция while
Инструкция 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: # принимает значение True, пока список не пуст
play sound lines.pop(0) # удаляет первый элемент
pause
while True:
"This is the song that never terminates."
"It goes on and on, my compatriots."
Выражение вычисляется при первом входе в инструкцию while, а затем каждый раз, когда управление достигает конца блока. Когда выражение возвращает ложное значение, выполняется инструкция, следующая за инструкцией while.
В Ren'Py нет инструкций continue, break или for. Инструкции continue и break можно заменить переходами (jumps) к меткам, расположенным до или после цикла while соответственно. Первый пример цикла while выше показывает, как цикл while может заменить простую инструкцию for. Второй показывает, как он может заменить инструкцию for, которая перебирает элементы списка (также известную в других языках программирования как инструкция foreach).
Инструкция pass
Инструкция pass может быть использована, когда требуется блок, но ни одна инструкция не подходит. Она ничего не делает.
Например:
if points >= 10:
"You're doing great!"
elif points >= 1:
pass
else:
"Things aren't looking so good."
# event.step() - это функция, которая возвращает True, пока есть
# еще события, которые необходимо выполнить.
while event.step():
pass