文字列を元に、異なるシナリオ関数へ飛ぶコードを作ってみます。
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では選択肢で値を得て、
"藤堂"+"選択肢で得た値"の名のシナリオ関数へ飛ぶように指定しています。