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

SESSION 13 その24
対象処理モードを作る(移動処理のみ) つづき
  作成の流れ

えーと、作成の流れは・・・

まず、
「部屋」の分岐を作りました。

今回の処理も「部屋」を基準ね。

その中に、
「行動コマンド」の分岐を
作りました。


こうすれば
部屋ごとに違うメッセージを
表示できるよね?
うん、それでいいね。

例えば、入口の中に
移動、見る、使うの分岐。

これなら入口だけの
処理ができるね。
うーんと。
 
 

テキストアドベンチャーゲーム
対象処理モード(移動処理のみ)
KottonCastleEscapeのKCEMain.java)
 
・・・    
      /**
       * 対象処理モード
       */
      private static void execModeTarget() {
         //***** 入力された行動コマンドから対象コマンドを表示する *****
    
         //対象コマンドの一覧を表示
         System.out.println("---------------------------------------------");
    
         //部屋ごとの処理
         //***************
         //もし入口なら
          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
            //もし移動なら
             if (inputNum == ACT_MOVE) {
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
    
         //***************
         //もし廊下なら
         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
            //もし移動なら
             if (inputNum == ACT_MOVE) {
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
    
         //***************
         //もし寝室なら
         } else if (nowRoomNum == TAR_ROOM_BED) {
            //もし移動なら
            if (inputNum == ACT_MOVE) {
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
         }
    
         //対象コマンド共通の表示
         System.out.print(">");
      }
    
・・・    
作成した手順
1、部屋ごとの分岐を作る
2、その中に行動コマンドの分岐を作成


次に
「移動」を選んだ時の
対象リストと入力マークの
表示処理を作りました。


対象リストの表示は
・入力する番号
・部屋名(入口、廊下、寝室)
をつなげた書式にしたよ。

それから、
入力マークは改行しないように
print()で表示しました。
 
いいね!
おお、
入力番号の表示には
定数を使ってるな。


「定数:部屋名」

こうしておけば
定数の数値を変更しても
連動して、入力する数字の
表示も変わるね。
 

テキストアドベンチャーゲーム
対象処理モード(移動処理のみ)
KottonCastleEscapeのKCEMain.java)
 
・・・    
      /**
       * 対象処理モード
       */
      private static void execModeTarget() {
         //***** 入力された行動コマンドから対象コマンドを表示する *****
    
         //対象コマンドの一覧を表示
         System.out.println("---------------------------------------------");
    
         //部屋ごとの処理
         //***************
         //もし入口なら
          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
            //もし移動なら
             if (inputNum == ACT_MOVE) {
               //対象コマンド移動先表示
               System.out.println("どの部屋に移動する?");
               System.out.println(TAR_ROOM_ENTRANCE + ":入口");
               System.out.println(TAR_ROOM_PASSAGE + ":廊下");
               System.out.println(TAR_ROOM_BED + ":寝室");
    
               System.out.print(">");
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
    
         //***************
         //もし廊下なら
         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
            //もし移動なら
             if (inputNum == ACT_MOVE) {
               //対象コマンド移動先表示
               System.out.println("どの部屋に移動する?");
               System.out.println(TAR_ROOM_ENTRANCE + ":入口");
               System.out.println(TAR_ROOM_PASSAGE + ":廊下");
               System.out.println(TAR_ROOM_BED + ":寝室");
    
               System.out.print(">");
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
    
         //***************
         //もし寝室なら
         } else if (nowRoomNum == TAR_ROOM_BED) {
            //もし移動なら
            if (inputNum == ACT_MOVE) {
               //対象コマンド移動先表示
               System.out.println("どの部屋に移動する?");
               System.out.println(TAR_ROOM_ENTRANCE + ":入口");
               System.out.println(TAR_ROOM_PASSAGE + ":廊下");
               System.out.println(TAR_ROOM_BED + ":寝室");
    
               System.out.print(">");
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
         }
    
         //対象コマンド共通の表示
         System.out.print(">");
      }
・・・    
全ての部屋に移動処理を追加した


まあ、細かく言えば・・・

入口から入口へ
移動できるのって変でしょ。

自分の現在いる部屋を
リストに表示しないように
作ってもいいんだけどね。

まあ、今回はいいや。

独り言。。。。
???


ちっちゃく
できるよね。
でね、よく見てみると・・・

どの部屋も同じ移動処理
だったから、関数で1つに
まとめちゃいました。
 
うん、コードも
見やすくなったね。
  いい感じだね。
 
 

テキストアドベンチャーゲーム
対象処理モードを作る(移動処理のみ)
KottonCastleEscapeのKCEMain.java)
 
・・・    
      /**
       * 対象処理モード
       */
      private static void execModeTarget() {
         //***** 入力された行動コマンドから対象コマンドを表示する *****
    
         //対象コマンドの一覧を表示
         System.out.println("---------------------------------------------");
    
         //部屋ごとの処理
         //***************
         //もし入口なら
          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
            //もし移動なら
             if (inputNum == ACT_MOVE) {
               selectMove();//対象モード 移動表示処理
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
    
         //***************
         //もし廊下なら
         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
            //もし移動なら
             if (inputNum == ACT_MOVE) {
               selectMove();//対象モード 移動表示処理
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
    
         //***************
         //もし寝室なら
         } else if (nowRoomNum == TAR_ROOM_BED) {
            //もし移動なら
            if (inputNum == ACT_MOVE) {
               selectMove();//対象モード 移動表示処理
    
            //もし見るなら
            } else if (inputNum == ACT_LOOK) {
               
            //もし使うなら
            } else if (inputNum == ACT_USE) {
    
            }
         }
    
         //対象コマンド共通の表示
         System.out.print(">");
      }
     
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
   
      /**
       * 対象処理モード 移動表示処理
       */
      private static void selectMove() {
         //対象コマンド移動先表示
         System.out.println("どの部屋に移動する?");
         System.out.println(TAR_ROOM_ENTRANCE + ":入口");
         System.out.println(TAR_ROOM_PASSAGE + ":廊下");
         System.out.println(TAR_ROOM_BED + ":寝室");
      }
・・・    
関数を使って処理を1つにまとめた

     

ちゃんと
理解できてるな。

よくできました。
これで、「移動」はできたから
あとで「見る」とか「使う」の
処理をこの分岐の中に追加して
いけばいいだけだな。

対象処理モードは
取り合えずこれでおっけ!
 
やった!

2段階目もできた!
  取り合えず
だけど!

進んでるね!
 



次は
最後のモードだ。

結果処理モードを
作ろう。
いよいよ、
最後の「結果」だね。

これで動くプログラム
ができるんだね!
どうどう、
焦らないで。
やったね!

移動できる
ようになるまで
あとちょっと!
 

課題一覧
テキストアドベンチャーゲーム作成の流れ
 
目的 課題
動くプログラムを作る
1、メインループと入出力処理を作る
2、各モードの関数の枠とモードの切換処理を作る
3、行動処理モードを作る
4、対象処理モードを作る(「移動」処理のみ)
5、結果処理モードを作る(「移動」処理のみ)
その他の処理を作る
6、「見る」処理を作る(対象処理モード、結果処理モード)
7、「使う」処理を作る(対象処理モード、結果処理モード)
8、オープニング、エンディングを作る
9、エラー処理を作る
10、シナリオを追加する
 
仕様書を元に課題を解いて下さい
各課題は、出題 ヒント 解答 の流れになります

 
 

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