Home>戻る
〜第16章 会話の選択肢〜
「(質問)?」→「はい/いいえ」
という選択肢を作ってみましょう。
これもスクリプトで制御します。
質問の部分は普通の会話と同じなのでtalkを使います。
そして選択肢用のコマンドを使います。
このRPGは「はい/いいえ」以外に自分で選択肢を作れるようにしたので、
最初に選択肢を定義させてやります。選択肢は最大で3つ作れるようにしました。
そして別ウインドウ(これからダイアログと呼びます)を開いて選択肢を表示させ、ユーザーの反応を待ちます。
1.選択肢の定義 選択肢1→はい 選択肢2→いいえ 選択肢3→分からない
2.ダイアログの表示
3.選択肢1を選んだ時の記述、選択肢2を選んだ時の記述、選択肢3を選んだ時の記述
スクリプトは以下のようになります。
[eventscript/0803.txt]
talk:にゃあ、にゃあ?
SCENE1:はい
SCENE2:いいえ
DIALOG:
IF_SCENE1:
talk:うん、よく分かったにゃ。僕は右利きだにゃ。
IF_SCENE2:
talk:ちゃうにゃん、僕は右利きだにゃー。
END_SCENE:
スクリプト読み込みのプログラムでは、「DIALOG:」までは順番に処理していきますが、
それ以降は選択肢によって読み飛ばさなければなりません。
「IF_SCENE1:」を読み込んだ時、もし決定した選択肢NOが1ならそのまま実行させます。
違うようならスキップフラグをセットします。
スキップフラグがあるようならコマンドを実行させません。
そして「IF_SCENE2:」が読み込まれます。
ここでまた選択肢NOとを比較します。
選択肢NOが2ならスキップフラグを解除し、実行させます。
選択肢NOが2以外ならスキップフラグをセットします。
同様に「IF_SCENE3:」も処理し、最後に「END_SCENE:」が読み込まれます。
ここでスキップフラグを解除します。
//game_buffer[7]は選択したNO(0,1,2)
//game_flags[10]はスキップフラグ
//ラベル確認
if(command.equals("IF_SCENE1")){
//そのラベル以降は実行すべきか?
if(game_buffer[7] == 0){
game_flags[10] = false;//スキップ解除してそのまま実行
}
else{
game_flags[10] = true;//スキップ
}
}else if(command.equals("IF_SCENE2")){
//そのラベル以降は実行すべきか?
if(game_buffer[7] == 1){
game_flags[10] = false;//スキップ解除してそのまま実行
}
else{
game_flags[10] = true;//スキップ
}
}else if(command.equals("IF_SCENE3")){
//そのラベル以降は実行すべきか?
if(game_buffer[7] == 2){
game_flags[10] = false;//スキップ解除してそのまま実行
}
else{
game_flags[10] = true;//スキップ
}
}else if(command.equals("END_SCENE")){
//スキップ終了
game_flags[10] = false;
}
//スキップ実行の時
if(game_flags[10]){
return true;//抜ける
}
<プログラム公開>
Rpg16.java
プロジェクト一式ダウンロード(データ含む)