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

プロジェクト一式ダウンロード(データ含む)