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

SESSION 13 その52
「使う」処理を作る(対象処理モード、結果処理モード) つづき
  「使う」処理の追加:結果処理モード


最後に、結果処理モードに
「使う」処理を作りました。

ここではアイテムを使った
「結果」の処理をするよ。


同じアイテムでも、
部屋によって使った結果が違う
から部屋別に処理を作ったよ。

例えば、
鍵だったら「寝室」の「金庫」以外
使っても意味ないからね。
アイテムの場合
手に入れたアイテムは
どの部屋でも使われる
可能性があるからね。

全部の部屋で、
全てのアイテムの処理が
必要だ。


これで鍵や爆弾を使えるね。
これで
行動コマンド
全部使えるね。
よくがんばりました。
 

テキストアドベンチャーゲーム
「使う」処理(対象処理モード、結果処理モード)
KottonCastleEscapeのKCEMain.java)370行目~
 
・・・    
370      /**
371        * 結果処理モード
372       */
373      private static void execModeResult() {
374         //***** 入力された対象コマンド別に実行処理と表示をする *****
375    
376         //部屋ごとの処理
377         //***************
378         //もし入口なら
379         if (nowRoomNum == TAR_ROOM_ENTRANCE) {
380            //行動コマンド選択別処理:保存しておいた値を使用
381            //もし移動なら
382            if (keepActNum == ACT_MOVE) {
383               resultMove();//結果モード 移動表示処理
384    
385            //もし見るなら
386            } else if (keepActNum == ACT_LOOK) {
387               //選択処理表示
388               //ドア
389               if (inputNum == TAR_LOOK_ENTRANCE_DOOR) {
390                  System.out.println("L-01:扉です。");
391               }
392                  
393            //もし使うなら
394            } else if (keepActNum == ACT_USE) {
395               //アイテム処理
396               //暗証番号
397               if (inputNum == TAR_USE_ITEM_CODE_5963
398                     || inputNum == TAR_USE_ITEM_CODE_3150
399                     || inputNum == TAR_USE_ITEM_CODE_3150) {
400                  System.out.println("U-01:使えません。");
401    
402               //鍵
403               } else if (inputNum == TAR_USE_ITEM_KEY) {
404                       System.out.println("U-02:ドアの鍵穴には入らない。");
405    
406               //爆弾
407               } else if (inputNum == TAR_USE_ITEM_BOM) {
408                       System.out.println("U-03:爆弾でドアを吹き飛ばしました。");
409                       System.out.println("脱出しました。エンディングへ");
410               }
411            }
412    
413         //***************
414         //もし廊下なら
415         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
416            //行動コマンド選択別処理:保存しておいた値を使用
417            //もし移動なら
418            if (keepActNum == ACT_MOVE) {
419               resultMove();//結果モード 移動表示処理
420    
421            //もし見るなら
422            } else if (keepActNum == ACT_LOOK) {
423                  //選択処理表示
424                  //窓
425                  if (inputNum == TAR_LOOK_PASSAGE_WINDOW) {
426                     System.out.println("L-02:窓の外は海です。");
427    
428                  //絵画
429                  } else if (inputNum == TAR_LOOK_PASSAGE_PICTURE) {
430                     System.out.println("L-03:絵です。");
431                  }
432            //もし使うなら
433            } else if (keepActNum == ACT_USE) {
434               //行動コマンド選択別処理:保存しておいた値を使用
435               //アイテム処理
436               //暗証番号
437                if (inputNum == TAR_USE_ITEM_CODE_5963
438                     || inputNum == TAR_USE_ITEM_CODE_3150
439                     || inputNum == TAR_USE_ITEM_CODE_3150) {
440                  System.out.println("U-01:使えません。");
441    
442               //鍵
443               } else if (inputNum == TAR_USE_ITEM_KEY) {
444                       System.out.println("U-04:ここには鍵を使うものが無い。");
445    
446               //爆弾
447               } else if (inputNum == TAR_USE_ITEM_BOM) {
448                       System.out.println("U-05:爆発させても意味が無い。");
449               }
450            }
451    
452         //***************
453         //もし寝室なら
454         } else if (nowRoomNum == TAR_ROOM_BED) {
455            //行動コマンド選択別処理:保存しておいた値を使用
456            //もし移動なら
457            if (keepActNum == ACT_MOVE) {
458               resultMove();//結果モード 移動表示処理
459    
460            //もし見るなら
461            } else if (keepActNum == ACT_LOOK) {       
462               //選択処理表示
463               //ベッド
464               if (inputNum == TAR_LOOK_BED_BED) {
465                  System.out.println("L-04:大きなベッドです。");
466    
467               //テーブル
468               } else if (inputNum == TAR_LOOK_BED_TABLE) {
469                  System.out.println("L-05:何も無いテーブルです。");
470    
471                  tableLookCount += 1;//見るカウンタを加算
472    
473                  //見るカウントチェック
474                  if (tableLookCount == 2) {
475                     System.out.println("L-06:あ、そう言えば、・・・");
476    
477                  //3回以上見たら鍵取得
478                  } else if (tableLookCount >= 3) {
479                      tableLookCount = 3;//何回見てもこれ以上大きくさせない
480    
481                     //鍵をまだ見つけてなければ
482                     if (!itemKeyFlg) {
483                        System.out.println("L-07:<アイテム>:金庫の鍵を手に入れました");
484    
485                         itemKeyFlg = true;//フラグを立てる
486                     }
487                  }
488    
489               //金庫
490               } else if (inputNum == TAR_LOOK_BED_SAFE) {
491                  System.out.println("L-08:開けるには暗証番号と鍵が必要です。");
492               }
493            //もし使うなら
494            } else if (keepActNum == ACT_USE) {
495               //アイテム処理
496               //暗証番号(5963)
497               if (inputNum == TAR_USE_ITEM_CODE_5963) {
498                  //暗証番号:鍵を持っている場合のみ入力可能
499                  if (itemKeyFlg) {
500                     System.out.println("U-06:この番号じゃない。");
501    
502                  } else {
503                     System.out.println("U-09:鍵を持っていないと入力しても意味がありません。");
504                  }
505    
506                //暗証番号(3156)
507               } else if (inputNum == TAR_USE_ITEM_CODE_3156) {
508                  //暗証番号:鍵を持っている場合のみ入力可能
509                  if (itemKeyFlg) {
510                     System.out.println("U-07:<アイテム>:爆弾を手に入れました");
511    
512                     itemBomFlg = true;//爆弾アイテムフラグを立てる
513    
514                  } else {
515                     System.out.println("U-09:鍵を持っていないと入力しても意味がありません。");
516                  }
517    
518               //暗証番号(3150)
519               } else if (inputNum == TAR_USE_ITEM_CODE_3150) {
520                  //暗証番号:鍵を持っている場合のみ入力可能
521                  if (itemKeyFlg) {
522                     System.out.println("U-08:この番号じゃない。");
523    
524                  } else {
525                     System.out.println("U-09:鍵を持っていないと入力しても意味がありません。");
526                  }
527    
528               //鍵
529               } else if (inputNum == TAR_USE_ITEM_KEY) {
530                       System.out.println("U-10:金庫の鍵はこれでOKです。");
531    
532               //爆弾
533               } else if (inputNum == TAR_USE_ITEM_BOM) {
534                       System.out.println("U-11:ベッドを壊さないで下さい。");
535               }
536            }
537         }
538    
539          //共通の処理
540         System.out.println("");
541         System.out.println("---------------------------------------------");
542         System.out.println("-- 1を入力してEnterキーを押してください ---");
543         System.out.print(">");
544    
545      }
・・・    
結果処理モード関数の「使う」の分岐に処理を追加した

 
部屋ごとに、
どんな処理を書いたか
説明するね。

作るのには、
主にシナリオの表
参考にしたよ。
 
そうだね、
結果の表示には
シナリオの表の
メッセージを使おう。
  順調。
 
 
 
シナリオ詳細(管理番号追加)(サンプル)
 
部屋 番号 状況
メッセージ例
行動 対象 番号 結果メッセージの例
入口 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 ベッドを壊さないで下さい。
 
行動リストや対象リストの表示メッセージは省略しています
 
 

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