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

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

はーい、
ぱぱでちゅよー。


今度おっきいお船
見に行きまちょうね~

どんぶらこ~。
   
こほんっ・・・

忙しい所悪いんだけど。

なぽちゃん、
ちょっと質問いい?
いい子
でちゅね~
   
あたし何も
見てない
から。

  ヒント1:結果処理モードの作り方

えっと、まず
結果処理モードの作り方
なんだけど。

「移動」の時の分岐は
2段階で済んじゃったけど
「見る」の場合は3段階になる
よね?

例えば、廊下なら
こんな感じでいいのかな?
いいね。

部屋(廊下)>行動(見る)
対象(窓)

つまり、「見る」の場合だと
3段階目の分岐は「背景」って
ことだな。

1つ前の対象処理モードで、
inputNumに対象(背景)を
入れてるからね。


その値を使って分岐させよう。
何の
予行練習?
ごほん  
おままごと
じゃないよ。

予行演習だよ。
 

ことのイメージ
 
・・・    
          //***************
          //もし廊下なら
          } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
             //行動コマンド選択別処理:保存しておいた値を使用
             //もし移動なら
              if (keepActNum == ACT_MOVE) {
                resultMove();//結果モード 移動表示処理
     
             //もし見るなら
             } else if (keepActNum == ACT_LOOK) {
                   //選択処理表示
                   //窓
                    if (inputNum == TAR_LOOK_PASSAGE_WINDOW) {
                      System.out.println("L-02:窓の外は海です。");
     
                   //絵画
                   } else if (inputNum == TAR_LOOK_PASSAGE_PICTURE) {
                      System.out.println("L-03:絵です。");
                   }
     
             //もし使うなら
             } else if (keepActNum == ACT_USE) {
                System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
     
             }
・・・    
対象コマンド(背景)で分岐させる。

判定は1つ前のモード(対象処理モード)で入力された対象コマンドで行う。
値は変数 inputNumに入っている。


 
この分岐を作るのには
出力の表やシナリオの表が
参考になるよ。
 
そうだね、
そのまま分岐に
使えそう。
  これは
大丈夫。
 
 
 
出力の詳細(対象処理モード)
 
[出力] 対象リストの表示
「現在の部屋」>「選ばれた行動コマンド」>「対象リスト」を表示
現在の部屋 行動 表示メッセージ(対象リスト)
入口 移動 どこに?

1:入口 2:廊下 3:寝室
見る どこを?

1:ドア
使う なにを?

1:暗証番号1
2:暗証番号2
3:暗証番号3
4:金庫の鍵(所持の場合)
5:爆弾(所持の場合)
廊下 移動 どこに?

1:入口 2:廊下 3:寝室
見る どこを?

1:窓 2:絵画
使う なにを?

1:暗証番号1
2:暗証番号2
3:暗証番号3
4:金庫の鍵(所持の場合)
5:爆弾(所持の場合)
寝室 移動 どこに?

1:入口 2:廊下 3:寝室
見る どこを?

1:ベッド 2:テーブル 3:金庫
使う なにを?

1:暗証番号1
2:暗証番号2
3:暗証番号3
4:金庫の鍵(所持の場合)
5:爆弾(所持の場合)
 
 
 
シナリオ詳細(管理番号追加)(サンプル)
 
部屋 番号 状況
メッセージ例
行動 対象 番号 結果メッセージの例
入口 S-01 ここは入口
です。
移動 全部屋共通 M-01 別の部屋に行きます。
見る ドア L-01 扉です。
使う 暗証番号1(5963) U-01 使えません。
暗証番号2(3156) - U-01と同じ
暗証番号3(3150) - U-01と同じ
金庫の鍵 U-02 ドアの鍵穴には入らない。
爆弾 U-03 爆弾でドアを吹き飛ばしました。
脱出しました。エンディングへ
廊下 S-02 ここは廊下
です。
移動 全部屋共通 - M-01と同じ
見る L-02 窓の外は海です。
絵画 L-03 絵です。
使う 暗証番号1(5963) - U-01と同じ
暗証番号2(3156) - U-01と同じ
暗証番号3(3150) - U-01と同じ
金庫の鍵 U-04 ここには鍵を使うものが無い。
爆弾 U-05 爆発させても意味が無い。
寝室 S-03 ここは寝室
です。
移動 全部屋共通 - M-01と同じ
見る ベッド L-04 大きなベッドです。
テーブル1回目 L-05 何も無いテーブルです。
テーブル2回目 L-06 あ、そう言えば・・・
テーブル3回目 L-07 <アイテム>:金庫の鍵を手に入れました
金庫 L-08 開けるには暗証番号と鍵が必要です。
使う 暗証番号1(鍵有り) U-06 この番号じゃない。
暗証番号2(鍵有り) U-07 <アイテム>:爆弾を手に入れました。
暗証番号3(鍵有り) U-08 この番号じゃない。
暗証番号(鍵無し) U-09 鍵を持っていないと入力しても意味がありません。
金庫の鍵 U-10 金庫の鍵はこれでOKです。
爆弾 U-11 ベッドを壊さないで下さい。
 
行動リストや対象リストの表示メッセージは省略しています

  ヒント2:イベントとアイテムの処理

それから
イベントの作り方なんだけど。

ほら、テーブルを
3回見たら鍵が見つかる
ように決めたでしょ。


作ろうと思ったんだけど・・・。
うーん、
どう作ればいいのかな?
ああ、そのイベントは、
変数でカウンターを
作ったらいい
よ。

テーブルを「見る」たびに
カウントして、それ以上に
なったら鍵が手に入るように
すればいい。

制御文を使って判定しよう。
 
 



カウンターを
メイン関数内で宣言して
引数で値を受け渡し
してもいいけど。

めんどいでしょ。
このカウンターは
カウントが消えないように
メンバ変数で作ろう。


関数内で宣言した変数じゃ
関数が終わったら値が
消えちゃうからね。
毎回リセットされちゃうよ。
 
なるほど。
なんとなく分かってきたかも。

ゲーム中に、
継続して使う変数の場合は
メンバ変数にする
んだね。

そうすれば、ゲームが終わるまで
ずっと値が残ってるもんね。

実際に使うと理解できるね。
  今回は
ほとんど全部
メンバ変数
だけど。
 


それから、
アイテムのフラグ
もう作ったかな?
 
これは大丈夫。
うん、
boolean型の変数で
鍵フラグを作った
よ。

手に入れたら
trueにしてあげれば
いいんだよね。

もちろん、消えないように
メンバ変数にしたよ。


そゆこと。

じゃあ、
がんばってねー。
分かりました!

ありがと。
やってみるね。
じゃあね。

俺忙しいから。
行って
らっしゃーい。

     

ただいまー

パパ帰った
でちゅよー

おかえりー

忙しいね、
ぱぱ。
         


いやーん
本物!!

やられたー!

いえーい

大成功!
         

解答は次のページです
 
 

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