文字列を元に、異なるシナリオ関数へ飛ぶコードを作ってみます。
void キャラとシナリオナンバー選んでね(string szX,int nX){jumps (szX + nX.String());}
void game_main(void) { ' 朝の支度はし終えた。'A; ' さて。どうしよう?'A;
MENU_ADD(1,"朝ご飯を食べに行く"); MENU_ADD(2,"トイレにいく。"); int nX = MENU_SELECT; キャラとシナリオナンバー選んでね("藤堂",nX); }
#藤堂1(void) { '【藤堂】'R;'「おはよう。よく眠れたか?」'A;
'【はばねろ】'R;'「……なんでいるん?」'A;
' 居間につく。何故かそこにいる'R; ' 食パン咥えた藤堂が、のんきに尋ねてきた。'A; }
#藤堂2(void) { '【はばねろ】'R;'「ふートイレトイレ」'A; ' 私はさっそくトイレに行くことにした。'A; }
とりあえず重要なのは一つ目の関数「キャラとシナリオナンバー選んでね」です。
まず、引数のstringとintを結合します。
その結合して出来たstring変数をjumpsの引数の文字列に指定します。
jumpsは、引数の文字列と同じシナリオ関数へ飛ぶものです。("藤堂1"と指定したら#藤堂1へ)
gamemainでは選択肢で値を得て、
"藤堂"+"選択肢で得た値"の名のシナリオ関数へ飛ぶように指定しています。