選択肢 link

ビジュアルノベルには、プレイヤーに物語の行方を左右するような選択を迫るものがたくさんあります。Ren'Py 言語の menu ステートメント で、ユーザーに選択肢を簡単に提示できます。

ここに menu ステートメント の例を挙げます。

menu:
     "What should I do?"

     "Drink coffee.":
         "I drink the coffee, and it's good to the last drop."

     "Drink tea.":
         $ drank_tea = True

         "I drink the tea, trying not to make a political statement as I do."

     "Genuflect.":
         jump genuflect_ending

label after_menu:

     "After having my drink, I got on with my morning."

menu ステートメント は、予約語 menu で始まります。これにラベル名を続けると、そのラベルの後に menu があるのと同じになります。例

menu drink_menu:
    ...

menu ステートメントには、インデントされたブロックを続けます。このブロックには say ステートメント も書けますが、少なくとも一つ選択肢を書かなければなりません。say ステートメント があれば、選択肢と同時にそれが画面に表示されます。

選択肢 選択肢は、ユーザーが選べる項目です。選択肢は文字列で始まります。その文字列に if 節を続けると、それを選択肢表示の条件に出来ます。選択肢はコロンで終わり、Ren'Py ステートメントのブロックを続けなければなりません。

選択肢が選ばれると、そのステートメントのブロックが実行されます。ブロックが最後まで実行されると、menu ステートメント後にあるステートメントに実行が続きます。

if 節は、予約語 if で始まり、Python 式が続きます。その式が True であるときのみ対応する選択肢が表示されます。以下の選択肢では

menu:
    "Go left.":
        ...
    "Go right.":
        ...
    "Fly above." if drank_tea:
        ...

第三の選択肢は drank_tea 変数が True の時のみ表示されます(ただし、 config.menu_include_disabled 変数が True に設定されていると、無効化されたボタンとして表示されます)。

すべてのメニューに条件が満たされていない if があるとき、そのメニューはスキップされ、制御はその次のステートメントに進みます。