シナリオ関数の文字列分岐

Last-modified: 2008-05-21 (水) 22:14:30

文字列を元に、異なるシナリオ関数へ飛ぶコードを作ってみます。

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