広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English
 

SESSION 13 その58
オープニング、エンディングを作る つづき
  モード切換処理の変更

次に、メイン関数と
結果処理モード関数に
モードを切り替える
処理を作りました。


まずは、
メイン関数側の仕組みを
順番に説明していくね。
うー、
あとちょっとだー
エンディング
出したら
ゲーム終了
だもんな。
これで、オープニングと
エンディングの関数を
呼び出せるね。
 

テキストアドベンチャーゲーム
オープニング、エンディング
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               }  
・・・      
エンディングフラグでモードを分岐させるように変更した

 
 

広告
home もくじ 前のページを読む 次のページを読む
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -
広告