條件語句 link
Ren’Py中包含幾種語句可以基於某些表達式值改變主控流程。(多提一句, jump 、 call 和 return 語句修改主控流程不需要前置條件。)
注意之前幾頁討論過的,可以使用在Ren’Py腳本中的各類語句。Python的while、if、and語句可以內嵌在Ren’Py遊戲中,但不能內嵌在Ren’Py腳本語句之中。
if語句 link
當if後的表達式為True時,if語句會執行後面的一個語句塊(block)。if語句包含1個 if
分句,0個或多個 elif
分句,可能有1個 else
分句。
每個分句應該保持在一個邏輯行內,下面跟一個語句塊(block)。 if
和 elif
關鍵字後面跟一個表達式。每個分句結尾都是英文冒號(:)。
舉例如下:
if flag:
e "你立了一個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,其對應的語句塊(block)會被立即執行,完成後主控流程將跳出if語句,開始執行if語句後面的內容。
如果if語句中所有表達式結果均為False, else
分句後的語句塊會被執行,前提是存在一個 else
分句。
while語句 link
當while語句中的表達式結果為True時,while分句下面的語句塊會執行。舉例:
$ count = 10
while count > 0:
"T-minus [count]."
$ count -= 1
"發射!"
$ lines = ["sounds/three.mp3", "sounds/two.mp3", "sounds/one.mp3"]
while lines: # 只要lines列表不為空,表達式結果等效於True
play sound lines.pop(0) # 移除lines列表第一個元素
pause
while True:
"這是一首永遠不會結束的歌。"
"它會不斷不斷播放下去,我的同胞們。"
當主控流程遇到while語句時,while後的表達式會被計算一次,另外每次while下的語句塊(block)執行結束後又會回到while表達式。除非while中的表達式結果為False,不然後面的語句塊會反覆不斷運行。
Ren’Py沒有continue、break和for循環語句。 使用jump語句分別跳轉至while循環之前和之後的腳本標籤(label),可以替代continue和break語句的功能。 在上面的第一個while循環樣例中,示範了如何使用while循環代替簡單的for循環語句。 第二個樣例中,示範了如何使用while循環通過列表實現疊代器功能(其他程序語言中的foreach語句)。
pass語句 link
當我們需要在腳本中根據語法要求必須出現一個語句塊(block),而又沒有實際內容可以寫時,可以使用pass語句。pass語句不做任何事。
舉例:
if points >= 10:
"棒棒的!"
elif points >= 1:
pass
else:
"情況看起來不妙。"
# event.step()函數可能會返回True,但依然有一些事件(event)需要執行。
while event.step():
pass