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

SESSION 13 その43
「見る」処理を作る(対象処理モード、結果処理モード) つづき

ここで、
今回の「見る」処理の
ポイントを確認しておこう。
はい。

お願いします。
バッチリ
よくできてました。
やった!

  処理する項目を揃える

この結果処理モードで重要なのは、
一つ前の対象処理モードで
選ばれた物の「結果を出す」
ってことだ。

つまり、「対象」と「結果」は
「物」の項目を全部揃える
必要がある。

これは全ての「行動」で同じだよ。
当たり前の
事だけど。
あたりまえー
そうだよね。

寝室>見る>ベッド
って対象を選んでも
結果に「ベッド」がなかったら
表示できないよね。
 

見た「対象」の「結果」を作る
 
 
対象処理モード:寝室>見る
・・・      
246  

         //もし見るなら

 
247  

         } else if (inputNum == ACT_LOOK) {

 
248  

                //全部の部屋共通の表示

 
249  

            System.out.println("何を見る?");

 
250  

         

 
251  

            //対象コマンド表示(ベット、テーブル、金庫)

 
252  

            System.out.println(TAR_LOOK_BED_BED + ":ベッド");

ベッド
253  

            System.out.println(TAR_LOOK_BED_TABLE + ":テーブル");

テーブル
254  

            System.out.println(TAR_LOOK_BED_SAFE + ":金庫");

金庫
255  

            

 
・・・      
 
 
結果処理モード:寝室>見る
・・・      
330 

         //もし見るなら

 
331 

         } else if (keepActNum == ACT_LOOK) {       

 
332 

            //選択処理表示

 
333 

            //ベッド

 
334 

             if (inputNum == TAR_LOOK_BED_BED) {

ベッド
     
337 

            //テーブル

 
338 

            } else if (inputNum == TAR_LOOK_BED_TABLE) {

テーブル
     
359 

            //金庫

 
360 

            } else if (inputNum == TAR_LOOK_BED_SAFE) {

金庫
     
362 

            }

 
・・・      
 
「対象」と「結果」の物の項目を同じにする事
 


もうっ!

今回出来てた
からって
調子に
のらないの!
ごめんなさいー。

  コードの追加:最小値・最大値の管理

書き写してね。
それから
「テーブル」の処理に
1つコードを追加
して
おこう。
 
うーん、これは
何の処理なの?
  はいっ。
 
 

テキストアドベンチャーゲーム
「見る」処理(対象処理モード、結果処理モード)
KottonCastleEscapeのKCEMain.java)346行目~
 
・・・    
346 

//3回以上見たら鍵取得

347 

} else if (tableLookCount >= 3) {

348 

     tableLookCount = 3;//何回見てもこれ以上大きくさせない

349   
350 

     //鍵をまだ見つけてなければ

351 

    if (!itemKeyFlg) {

352 

        System.out.println("L-07:<アイテム>:金庫の鍵を手に入れました");

353   
354 

        itemKeyFlg = true;//フラグを立てる

355 

    }

356 

}

・・・    
黄色の部分が追加部分です。
書き写して下さい。


このコードは、
テーブルカウントが3以上には
ならないようにする処理だよ。


カウントが3以上になった場合、
3で上書きして、何回見ても
3以上にしないようにしている。

つまり、最大値を固定してるんだ。

見るたびにカウントがどんどん
上がっていくままだと・・・


カウントがint型で使える最大値を
超えたらどうなる
と思う?
あっ!

エラーになっちゃう!
ぼかーん!
壊れちゃう!
 

テキストアドベンチャーゲーム
処理モードを作る(移動処理のみ)
KottonCastleEscapeのKCEMain.java)346行目~
 
 
・・・      
346 

//3回以上見たら鍵取得

 
347 

} else if (tableLookCount >= 3) {

 
348 

     tableLookCount = 3;//何回見てもこれ以上大きくさせない

3以上カウントを
上げないようにする
349     
350 

     //鍵をまだ見つけてなければ

 
351 

    if (!itemKeyFlg) {

 
352 

        System.out.println("L-07:<アイテム>:金庫の鍵を手に入れました");

 
353     
354 

        itemKeyFlg = true;//フラグを立てる

 
355 

    }

 
356 

}

 
・・・      
カウントが3以上になったら、3で上書きして強制的に3にしてしまう。
これ以上カウントを上げさせない。


まあ、実際は
エラーにはならないで
-2147483648
になるんだけどね。

最大から最小に
ぐるっと回っちゃうの。

でも、エラーの原因になる
可能性があるよね。
そうだね。

あたし、そんな事
考えたことなかった。
ぼかーん・・・

とは行きません
でした。今回は。

おしまい。
おしまいじゃ
だめでしょ。。。


プログラムでは、こう言った
最小値・最大値の管理
バグを作らないために
重要なんだ。


もしこのカウント変数が
別の場所で使われていたら
想定しない動作を
引き起こすからね。
こうしとけば
100回見ても
1000回見ても
カウントは3ね。
うーん、
なるほど。
そっか。

3以下の数が入っていると
勝手に思い込んで
プログラムを作っちゃ
だめなんだね。


自分で管理しないと。


これからは
最小値・最大値を
意識するようにしよう。

徐々に覚えてくれ。
はいっ。
これ重要ね!
はいっ!


まあ、
int型のMAXは
2147483647
だからね。

そこまで
繰り返し見るのは
おまえぐらい
だけど。
おっきすぎー

あたしだって
見れないよー!

     

しっかりコードの内容も
理解できてるみたいだし。

コードは全部OKです。
やったね!

うれしいなっ!
はなまる
です。
わーい!


これで
「見る」処理は完成。

さあ、後は
「使う」処理を作れば
行動コマンド完了だ!
嬉しいな、嬉しいな!

部屋を歩いて見れる
ようになったよ!


凄い進んでる!
後は「使う」ね!
もう
ちょっと
だね。
わーい!  
よーし、
がんばるぞ。
 

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

 
 

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