オープニング、エンディングを作る つづき |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
次に、メイン関数と
結果処理モード関数に
モードを切り替える
処理を作りました。
まずは、
メイン関数側の仕組みを
順番に説明していくね。
|
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
うー、
あとちょっとだー |
|
エンディング
出したら
ゲーム終了
だもんな。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
これで、オープニングと
エンディングの関数を
呼び出せるね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
テキストアドベンチャーゲーム
オープニング、エンディング
(KottonCastleEscapeのKCEMain.java)71行目~ |
|
・・・ |
|
|
|
071 |
|
///////////////////////////////////////////////////// |
|
072 |
|
//実行処理(選択されたコマンドによって表示) |
|
073 |
|
switch (nowMode) { |
|
074 |
|
|
|
075 |
|
//*************** |
|
076 |
|
//オープニング処理モード |
|
077 |
|
case MODE_OPENING: |
|
078 |
|
//オープニング処理モード関数呼び出し |
|
079 |
|
execModeOpenig(); |
|
080 |
|
|
|
081 |
|
//行動処理モード(1階層目)に変更する |
|
082 |
|
nowMode =
MODE_GAME_1_ACT; |
次のモードに変更 |
083 |
|
|
|
084 |
|
break; |
|
085 |
|
//*************** |
|
086 |
|
//行動処理モード |
|
087 |
|
case MODE_GAME_1_ACT: |
|
088 |
|
//行動処理モード関数呼び出し |
|
089 |
|
execModeAction(); |
|
090 |
|
|
|
091 |
|
//対象処理モード(2階層目)に切り替える |
|
092 |
|
nowMode =
MODE_GAME_2_TAR; |
|
093 |
|
|
|
094 |
|
break; |
|
095 |
|
//*************** |
|
096 |
|
//対象処理モード |
|
097 |
|
case
MODE_GAME_2_TAR: |
|
098 |
|
//対象処理モード関数呼び出し |
|
099 |
|
execModeTarget(); |
|
100 |
|
|
|
101 |
|
//入力された行動コマンドを保存する |
|
102 |
|
keepActNum = inputNum; |
|
103 |
|
//結果処理モード(3階層目)に切り替える |
|
104 |
|
nowMode = MODE_GAME_3_RES; |
|
105 |
|
|
|
106 |
|
break; |
|
107 |
|
//*************** |
|
108 |
|
//結果処理モード |
|
109 |
|
case MODE_GAME_3_RES: |
|
110 |
|
//結果処理モード関数呼び出し |
|
111 |
|
execModeResult(); |
|
112 |
|
|
|
113 |
|
//エンディング判定 |
|
114 |
|
if(endingFlg){ |
フラグでモードを分岐 |
115 |
|
//エンディング処理モードに変更する |
|
116 |
|
nowMode =
MODE_ENDING; |
|
117 |
|
|
|
118 |
|
}else{ |
|
119 |
|
//行動処理モード(1階層目)に戻す |
|
120 |
|
nowMode =
MODE_GAME_1_ACT; |
|
121 |
|
} |
|
122 |
|
|
|
123 |
|
break; |
|
124 |
|
//*************** |
|
125 |
|
//エンディング処理モード |
|
126 |
|
case MODE_ENDING: |
|
127 |
|
//エンディング処理モード関数呼び出し |
|
128 |
|
execModeEnding(); |
|
129 |
|
|
|
130 |
|
//終了処理 |
|
131 |
|
loopFlg =
false; |
ループを終了 |
132 |
|
|
|
133 |
|
break; |
|
134 |
|
} |
|
・・・ |
|
|
|
|
メイン関数に切換処理を追加した |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
まず、メイン関数の中に
オープニング処理モードの
分岐を追加しました。
オープニング処理が
終わったら、
行動処理モードに処理が
移るようにフラグを
変更するようにしたよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これで
オープニングの後に
ゲームを開始できるね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
 |
|
 |
|
テキストアドベンチャーゲーム
オープニング、エンディング
(KottonCastleEscapeのKCEMain.java)71行目~ |
|
・・・ |
|
|
|
071 |
|
///////////////////////////////////////////////////// |
|
072 |
|
//実行処理(選択されたコマンドによって表示) |
|
073 |
|
switch (nowMode) { |
|
074 |
|
|
|
075 |
|
//*************** |
|
076 |
|
//オープニング処理モード |
|
077 |
|
case MODE_OPENING: |
|
078 |
|
//オープニング処理モード関数呼び出し |
|
079 |
|
execModeOpenig(); |
|
080 |
|
|
|
081 |
|
//行動処理モード(1階層目)に変更する |
|
082 |
|
nowMode =
MODE_GAME_1_ACT; |
次のモードに変更 |
083 |
|
|
|
084 |
|
break; |
|
085 |
|
//*************** |
|
086 |
|
//行動処理モード |
|
087 |
|
case MODE_GAME_1_ACT: |
|
088 |
|
//行動処理モード関数呼び出し |
|
089 |
|
execModeAction(); |
|
090 |
|
|
|
091 |
|
//対象処理モード(2階層目)に切り替える |
|
092 |
|
nowMode =
MODE_GAME_2_TAR; |
|
093 |
|
|
|
094 |
|
break; |
|
095 |
|
//*************** |
|
096 |
|
//対象処理モード |
|
097 |
|
case
MODE_GAME_2_TAR: |
|
098 |
|
//対象処理モード関数呼び出し |
|
099 |
|
execModeTarget(); |
|
100 |
|
|
|
101 |
|
//入力された行動コマンドを保存する |
|
102 |
|
keepActNum = inputNum; |
|
103 |
|
//結果処理モード(3階層目)に切り替える |
|
104 |
|
nowMode = MODE_GAME_3_RES; |
|
105 |
|
|
|
106 |
|
break; |
|
107 |
|
//*************** |
|
108 |
|
//結果処理モード |
|
109 |
|
case MODE_GAME_3_RES: |
|
110 |
|
//結果処理モード関数呼び出し |
|
111 |
|
execModeResult(); |
|
112 |
|
|
|
113 |
|
//エンディング判定 |
|
114 |
|
if(endingFlg){ |
|
115 |
|
//エンディング処理モードに変更する |
|
116 |
|
nowMode =
MODE_ENDING; |
|
117 |
|
|
|
118 |
|
}else{ |
|
119 |
|
//行動処理モード(1階層目)に戻す |
|
120 |
|
nowMode =
MODE_GAME_1_ACT; |
|
121 |
|
} |
|
122 |
|
|
|
123 |
|
break; |
|
124 |
|
//*************** |
|
125 |
|
//エンディング処理モード |
|
126 |
|
case MODE_ENDING: |
|
127 |
|
//エンディング処理モード関数呼び出し |
|
128 |
|
execModeEnding(); |
|
129 |
|
|
|
130 |
|
//終了処理 |
|
131 |
|
loopFlg =
false; |
|
132 |
|
|
|
133 |
|
break; |
|
134 |
|
} |
|
・・・ |
|
|
|
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
次に、メイン関数の中に
エンディング処理モードの
分岐を追加しました。
ここでは、
エンディングの表示の後に
終了処理を作ってゲームを
終了するようにしました。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
順調、順調。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
エンディング処理モードの
最後にループフラグをfalse
にしてゲームを終了してる
んだな。
いいね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
テキストアドベンチャーゲーム
オープニング、エンディング
(KottonCastleEscapeのKCEMain.java)71行目~ |
|
・・・ |
|
|
|
071 |
|
///////////////////////////////////////////////////// |
|
072 |
|
//実行処理(選択されたコマンドによって表示) |
|
073 |
|
switch (nowMode) { |
|
074 |
|
|
|
075 |
|
//*************** |
|
076 |
|
//オープニング処理モード |
|
077 |
|
case MODE_OPENING: |
|
078 |
|
//オープニング処理モード関数呼び出し |
|
079 |
|
execModeOpenig(); |
|
080 |
|
|
|
081 |
|
//行動処理モード(1階層目)に変更する |
|
082 |
|
nowMode =
MODE_GAME_1_ACT; |
|
083 |
|
|
|
084 |
|
break; |
|
085 |
|
//*************** |
|
086 |
|
//行動処理モード |
|
087 |
|
case MODE_GAME_1_ACT: |
|
088 |
|
//行動処理モード関数呼び出し |
|
089 |
|
execModeAction(); |
|
090 |
|
|
|
091 |
|
//対象処理モード(2階層目)に切り替える |
|
092 |
|
nowMode =
MODE_GAME_2_TAR; |
|
093 |
|
|
|
094 |
|
break; |
|
095 |
|
//*************** |
|
096 |
|
//対象処理モード |
|
097 |
|
case
MODE_GAME_2_TAR: |
|
098 |
|
//対象処理モード関数呼び出し |
|
099 |
|
execModeTarget(); |
|
100 |
|
|
|
101 |
|
//入力された行動コマンドを保存する |
|
102 |
|
keepActNum = inputNum; |
|
103 |
|
//結果処理モード(3階層目)に切り替える |
|
104 |
|
nowMode = MODE_GAME_3_RES; |
|
105 |
|
|
|
106 |
|
break; |
|
107 |
|
//*************** |
|
108 |
|
//結果処理モード |
|
109 |
|
case MODE_GAME_3_RES: |
|
110 |
|
//結果処理モード関数呼び出し |
|
111 |
|
execModeResult(); |
|
112 |
|
|
|
113 |
|
//エンディング判定 |
|
114 |
|
if(endingFlg){ |
|
115 |
|
//エンディング処理モードに変更する |
|
116 |
|
nowMode =
MODE_ENDING; |
|
117 |
|
|
|
118 |
|
}else{ |
|
119 |
|
//行動処理モード(1階層目)に戻す |
|
120 |
|
nowMode =
MODE_GAME_1_ACT; |
|
121 |
|
} |
|
122 |
|
|
|
123 |
|
break; |
|
124 |
|
//*************** |
|
125 |
|
//エンディング処理モード |
|
126 |
|
case MODE_ENDING: |
|
127 |
|
//エンディング処理モード関数呼び出し |
|
128 |
|
execModeEnding(); |
|
129 |
|
|
|
130 |
|
//終了処理 |
|
131 |
|
loopFlg =
false; |
ループを終了 |
132 |
|
|
|
133 |
|
break; |
|
134 |
|
} |
|
・・・ |
|
|
|
|
エンディング処理の後にメインループを終了させた |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
最後に、
エンディングへの切換処理
をつくりました。
エンディングフラグを使って
次のモードの切換をさせたよ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
ここが
難しかった。
フラグを立てる
説明はこの後
するね。 |
|
はい、
よくできました。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
これで、ゲームが終わって
エンディングへ行くか
このままゲームを続けるか
切換ができるようになったね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
テキストアドベンチャーゲーム
オープニング、エンディング
(KottonCastleEscapeのKCEMain.java)71行目~ |
|
・・・ |
|
|
|
071 |
|
///////////////////////////////////////////////////// |
|
072 |
|
//実行処理(選択されたコマンドによって表示) |
|
073 |
|
switch (nowMode) { |
|
074 |
|
|
|
075 |
|
//*************** |
|
076 |
|
//オープニング処理モード |
|
077 |
|
case MODE_OPENING: |
|
078 |
|
//オープニング処理モード関数呼び出し |
|
079 |
|
execModeOpenig(); |
|
080 |
|
|
|
081 |
|
//行動処理モード(1階層目)に変更する |
|
082 |
|
nowMode =
MODE_GAME_1_ACT; |
|
083 |
|
|
|
084 |
|
break; |
|
085 |
|
//*************** |
|
086 |
|
//行動処理モード |
|
087 |
|
case MODE_GAME_1_ACT: |
|
088 |
|
//行動処理モード関数呼び出し |
|
089 |
|
execModeAction(); |
|
090 |
|
|
|
091 |
|
//対象処理モード(2階層目)に切り替える |
|
092 |
|
nowMode =
MODE_GAME_2_TAR; |
|
093 |
|
|
|
094 |
|
break; |
|
095 |
|
//*************** |
|
096 |
|
//対象処理モード |
|
097 |
|
case
MODE_GAME_2_TAR: |
|
098 |
|
//対象処理モード関数呼び出し |
|
099 |
|
execModeTarget(); |
|
100 |
|
|
|
101 |
|
//入力された行動コマンドを保存する |
|
102 |
|
keepActNum = inputNum; |
|
103 |
|
//結果処理モード(3階層目)に切り替える |
|
104 |
|
nowMode = MODE_GAME_3_RES; |
|
105 |
|
|
|
106 |
|
break; |
|
107 |
|
//*************** |
|
108 |
|
//結果処理モード |
|
109 |
|
case MODE_GAME_3_RES: |
|
110 |
|
//結果処理モード関数呼び出し |
|
111 |
|
execModeResult(); |
|
112 |
|
|
|
113 |
|
//エンディング判定 |
|
114 |
|
if(endingFlg){ |
フラグでモードを分岐 |
115 |
|
//エンディング処理モードに変更する |
|
116 |
|
nowMode =
MODE_ENDING; |
|
117 |
|
|
|
118 |
|
}else{ |
|
119 |
|
//行動処理モード(1階層目)に戻す |
|
120 |
|
nowMode =
MODE_GAME_1_ACT; |
|
121 |
|
} |
|
122 |
|
|
|
123 |
|
break; |
|
124 |
|
//*************** |
|
125 |
|
//エンディング処理モード |
|
126 |
|
case MODE_ENDING: |
|
127 |
|
//エンディング処理モード関数呼び出し |
|
128 |
|
execModeEnding(); |
|
129 |
|
|
|
130 |
|
//終了処理 |
|
131 |
|
loopFlg =
false; |
|
132 |
|
|
|
133 |
|
break; |
|
134 |
|
} |
|
・・・ |
|
|
|
|
エンディングフラグでモードを分岐させるように変更した |
|
|
 |
|
 |
|
|