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

SESSION 13 その30
結果処理モードを作る(移動処理のみ) つづき

 
じゃあ、どういう流れで
結果モードの処理を
作ったか説明してくれ。
 
はいっ。
   
 

  作成の流れ

えっと、
作り方は基本的には
対象処理モードと同じ。


まずは、
部屋の分岐を書いてから
中に行動コマンドの分岐を
書きました。
うん、
処理の流れは
同じような感じ
だからね。
同じー。
いいんじゃね。
 

テキストアドベンチャーゲーム
結果処理モード(移動処理のみ)
KottonCastleEscapeのKCEMain.java)
 
・・・    
      /**
        * 結果処理モード
        */
      private static void execModeResult() {
         //***** 入力された対象コマンド別に実行処理と表示をする *****
    
         //部屋ごとの処理
         //***************
         //もし入口なら
          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
            //行動コマンド選択別処理:保存しておいた値を使用
            //もし移動なら
             if (keepActNum == ACT_MOVE) {
    
            //もし見るなら
            } else if (keepActNum == ACT_LOOK) {
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
                  
            //もし使うなら
            } else if (keepActNum == ACT_USE) {
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
    
            }
    
         //***************
         //もし廊下なら
         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
            //行動コマンド選択別処理:保存しておいた値を使用
            //もし移動なら
             if (keepActNum == ACT_MOVE) {
    
            //もし見るなら
            } else if (keepActNum == ACT_LOOK) {
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
    
            //もし使うなら
            } else if (keepActNum == ACT_USE) {
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
    
            }
    
         //***************
         //もし寝室なら
         } else if (nowRoomNum == TAR_ROOM_BED) {
            //行動コマンド選択別処理:保存しておいた値を使用
            //もし移動なら
             if (keepActNum == ACT_MOVE) {
    
            //もし見るなら
            } else if (keepActNum == ACT_LOOK) {       
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
    
            //もし使うなら
            } else if (keepActNum == ACT_USE) {
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
    
            }
         }
    
          //共通の処理
         System.out.println("");
         System.out.println("---------------------------------------------");
         System.out.println("-- 1を入力してEnterキーを押してください ---");
         System.out.print(">");
    
      }
・・・    
作成した手順
1、部屋ごとの分岐を作る
2、その中に行動コマンドの分岐を作成


次に
移動の処理を書いたよ。


部屋ごとに移動の処理が
あるから、それぞれに
処理を書いたよ。

でもね、書いて見たら
全部同じ
だったの。
 
 
そうだな、
今回の場合
全部同じだね。
 

テキストアドベンチャーゲーム
結果処理モード(移動処理のみ)
KottonCastleEscapeのKCEMain.java)
 
・・・    
      /**
       * 結果処理モード
       */
      private static void execModeResult() {
         //***** 入力された対象コマンド別に実行処理と表示をする *****
    
         //部屋ごとの処理
         //***************
         //もし入口なら
          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
            //行動コマンド選択別処理:保存しておいた値を使用
            //もし移動なら
             if (keepActNum == ACT_MOVE) {
                   //全部の部屋共通の表示
                   System.out.println("M-01:別の部屋に行きます。");
    
                   //現在の部屋を変更する
                   nowRoomNum = inputNum;
    
            //もし見るなら
            } else if (keepActNum == ACT_LOOK) {
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
                  
            //もし使うなら
            } else if (keepActNum == ACT_USE) {
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
    
            }
    
         //***************
         //もし廊下なら
         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
            //行動コマンド選択別処理:保存しておいた値を使用
            //もし移動なら
             if (keepActNum == ACT_MOVE) {
                   //全部の部屋共通の表示
                   System.out.println("M-01:別の部屋に行きます。");
    
                   //現在の部屋を変更する
                   nowRoomNum = inputNum;
    
            //もし見るなら
            } else if (keepActNum == ACT_LOOK) {
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
    
            //もし使うなら
            } else if (keepActNum == ACT_USE) {
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
    
            }
    
         //***************
         //もし寝室なら
         } else if (nowRoomNum == TAR_ROOM_BED) {
            //行動コマンド選択別処理:保存しておいた値を使用
            //もし移動なら
             if (keepActNum == ACT_MOVE) {
                   //全部の部屋共通の表示
                   System.out.println("M-01:別の部屋に行きます。");
    
                   //現在の部屋を変更する
                   nowRoomNum = inputNum;
    
            //もし見るなら
            } else if (keepActNum == ACT_LOOK) {       
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
    
            //もし使うなら
            } else if (keepActNum == ACT_USE) {
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
    
            }
         }
    
         //共通の処理
         System.out.println("");
         System.out.println("---------------------------------------------");
         System.out.println("-- 1を入力してEnterキーを押してください ---");
         System.out.print(">");
    
      }
・・・    
全ての部屋に移動処理を追加した


だから、関数にして、
呼び出すようにしました。


関数 resultMove に
まとめたから書くのは
一箇所ですむよ。

これで、結果処理モードの
説明は終わりです。
どう?
自分で
考えてるね。
いいね!

どんどん
慣れてってるね。
 

テキストアドベンチャーゲーム
結果処理モード(移動処理のみ)
KottonCastleEscapeのKCEMain.java)
 
・・・      
      /**  
       * 結果処理モード  
       */  
      private static void execModeResult() {  
         //***** 入力された対象コマンド別に実行処理と表示をする *****  
      
         //部屋ごとの処理  
         //***************  
         //もし入口なら  
          if (nowRoomNum == TAR_ROOM_ENTRANCE) {  
            //行動コマンド選択別処理:保存しておいた値を使用  
            //もし移動なら  
             if (keepActNum == ACT_MOVE) {  
               resultMove();//結果モード 移動表示処理 関数化した
      
            //もし見るなら  
            } else if (keepActNum == ACT_LOOK) {  
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認  
                    
            //もし使うなら  
            } else if (keepActNum == ACT_USE) {  
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認  
      
            }  
      
         //***************  
         //もし廊下なら  
         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {  
            //行動コマンド選択別処理:保存しておいた値を使用  
            //もし移動なら  
             if (keepActNum == ACT_MOVE) {  
               resultMove();//結果モード 移動表示処理 関数化した
      
            //もし見るなら  
            } else if (keepActNum == ACT_LOOK) {  
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認  
      
            //もし使うなら  
            } else if (keepActNum == ACT_USE) {  
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認  
      
            }  
      
         //***************  
         //もし寝室なら  
         } else if (nowRoomNum == TAR_ROOM_BED) {  
            //行動コマンド選択別処理:保存しておいた値を使用  
            //もし移動なら  
             if (keepActNum == ACT_MOVE) {  
               resultMove();//結果モード 移動表示処理 関数化した
      
            //もし見るなら  
            } else if (keepActNum == ACT_LOOK) {         
                System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認  
      
            //もし使うなら  
            } else if (keepActNum == ACT_USE) {  
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認  
      
            }  
         }  
      
         //共通の処理  
         System.out.println("");  
         System.out.println("---------------------------------------------");  
         System.out.println("-- 1を入力してEnterキーを押してください ---");  
         System.out.print(">");  
      
      }  
       
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
     
      /**  
       * 結果処理モード 移動処理  
       */  
      private static void resultMove() {  
         //全部の部屋共通の表示  
         System.out.println("M-01:別の部屋に行きます。"); 結果表示
      
           //現在の部屋を変更する  
          nowRoomNum = inputNum; 行動する処理
      }  
・・・      
共通の部分を関数化した


でも、「移動」は
部屋と行動の2つの
分岐で済んじゃったね。


3つの分岐じゃないんだ。
「移動」の場合は
2つで済んじゃうんだよね。

対象の処理を
移動先ごとに分けないで
全部の部屋共通にしちゃったから。

「見る」、「使う」は3段階になるよ。
そっか、
移動先ごとに
「寝室に行きます。」
とか違うメッセージ
にもできたんだ。
まあ、
気にしないで。。。

 
 

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