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

SESSION 13 その75
エラー処理を作る つづき
  エラー処理:結果処理モード

次に、結果処理モード関数。

ここのinputNumには
対象処理モードで選ばれた
アイテムとかの番号が
入ってるはずだけど。

それ以外の番号がきても
大丈夫なように「それ以外」
のチェックを追加しました。
えーと。

こっちはリターンで
エラーフラグを
返してない
んだな。
 
どしてー
 

テキストアドベンチャーゲーム エラー処理
KottonCastleEscapeのKCEMain.java)331行目~
 
・・・    
331      /**
332       * 結果処理モード
333       */
334      private static boolean execModeResult() {
335         //***** 入力された対象コマンド別に実行処理と表示をする *****
336    
337           boolean endingFlg = false;//エンディングフラグ
338    
339         //部屋ごとの処理
340         //***************
341         //もし入口なら
342         if (nowRoomNum == TAR_ROOM_ENTRANCE) {
343            //行動コマンド選択別処理:保存しておいた値を使用
344            //もし移動なら
345            if (keepActNum == ACT_MOVE) {
346               resultMove();//結果モード 移動表示処理
347    
348            //もし見るなら
349            } else if (keepActNum == ACT_LOOK) {
350               //選択処理表示
351               //ドア
352               if (inputNum == TAR_LOOK_ENTRANCE_DOOR) {
   
355                //それ以外なら
356                } else {
357                  System.out.println("無効なコマンド番号です:" + inputNum);
358                }
359                  
360            //もし使うなら
361            } else if (keepActNum == ACT_USE) {
362               //アイテム処理
363               //暗証番号
364               if (inputNum == TAR_USE_ITEM_CODE_5963
365                     || inputNum == TAR_USE_ITEM_CODE_3156
366                     || inputNum == TAR_USE_ITEM_CODE_3150) {
   
369               //鍵
370               } else if (inputNum == TAR_USE_ITEM_KEY) {
   
378               //爆弾
379               } else if (inputNum == TAR_USE_ITEM_BOM) {
   
390               //それ以外なら
391               } else {
392                   System.out.println("無効なコマンド番号です:" + inputNum);
393               }
394            }
395    
396         //***************
397         //もし廊下なら
398         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
399            //行動コマンド選択別処理:保存しておいた値を使用
400            //もし移動なら
401            if (keepActNum == ACT_MOVE) {
402               resultMove();//結果モード 移動表示処理
403    
404            //もし見るなら
405            } else if (keepActNum == ACT_LOOK) {
406               //選択処理表示
407               //窓
408               if (inputNum == TAR_LOOK_PASSAGE_WINDOW) {
   
411               //絵画
412               } else if (inputNum == TAR_LOOK_PASSAGE_PICTURE) {
   
415               //それ以外なら
416               } else {
417                  System.out.println("無効なコマンド番号です:" + inputNum);
418               }
419    
420            //もし使うなら
421            } else if (keepActNum == ACT_USE) {
422               //行動コマンド選択別処理:保存しておいた値を使用
423               //アイテム処理
424               //暗証番号
425               if (inputNum == TAR_USE_ITEM_CODE_5963
426                     || inputNum == TAR_USE_ITEM_CODE_3156
427                     || inputNum == TAR_USE_ITEM_CODE_3150) {
   
430               //鍵
431               } else if (inputNum == TAR_USE_ITEM_KEY) {
   
439               //爆弾
440               } else if (inputNum == TAR_USE_ITEM_BOM) {
   
448               //それ以外なら
449               } else {
450                       System.out.println("無効なコマンド番号です:" + inputNum);
451               }
452            }
453    
454         //***************
455         //もし寝室なら
456         } else if (nowRoomNum == TAR_ROOM_BED) {
457            //行動コマンド選択別処理:保存しておいた値を使用
458            //もし移動なら
459            if (keepActNum == ACT_MOVE) {
460               resultMove();//結果モード 移動表示処理
461    
462            //もし見るなら
463            } else if (keepActNum == ACT_LOOK) {       
464               //選択処理表示
465               //ベッド
466               if (inputNum == TAR_LOOK_BED_BED) {
   
469               //テーブル
470               } else if (inputNum == TAR_LOOK_BED_TABLE) {
   
491               //金庫
492               } else if (inputNum == TAR_LOOK_BED_SAFE) {
   
495               //それ以外なら
496               } else {
497                  System.out.println("無効なコマンド番号です:" + inputNum);
498               }
499    
500            //もし使うなら
501            } else if (keepActNum == ACT_USE) {
502                //アイテム処理
503               //暗証番号(5963)
504               if (inputNum == TAR_USE_ITEM_CODE_5963) {
   
513                //暗証番号(3156)
514               } else if (inputNum == TAR_USE_ITEM_CODE_3156) {
   
525               //暗証番号(3150)
526               } else if (inputNum == TAR_USE_ITEM_CODE_3150) {
   
535               //鍵
536               } else if (inputNum == TAR_USE_ITEM_KEY) {
   
553               //それ以外なら
554               } else {
555                  System.out.println("無効なコマンド番号です:" + inputNum);
556               }
557            }
558         }
559    
560           //共通の処理
561           printWait();//待機表示処理
562    
563           return endingFlg;//モード変更フラグを戻す
564      }
   
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
611      /**
612       * 結果処理モード 移動表示処理
613       */
614      private static void resultMove() {
615         //全部の部屋共通の表示
616           //もしどこかの部屋にいたら
617           if (inputNum == TAR_ROOM_ENTRANCE ||
618            inputNum == TAR_ROOM_PASSAGE ||
619            inputNum == TAR_ROOM_BED ) {
620    
621               System.out.println("M-01:別の部屋に行きます。");
622    
623               //現在の部屋を変更する
624               nowRoomNum = inputNum;
625    
626           //それ以外なら
627           } else {
628               System.out.println("無効なコマンド番号です:" + inputNum);
629           }
630    
631      }
・・・    
対象の分岐に「その他」を追加してエラー処理を作った



それはね、
ここは結果処理モードでしょ。

何もしないでも、次は最初の
行動処理モードに戻るからね。

特にモード切替の処理は
必要ないかなって。

戻り値をendingFlgで
使っちゃってるからね。
どうしようかと思ったけど。
えへ

テストもしたけど
問題なかったよ。

せーふ。
せーふ。
よく気付いたな。
今回はそれで特に問題なし。

戻り値は1つしか使えない
からね。

もしエラーフラグも返す必要が
あったら、他の方法を
考えないといけなかったな。
 
エラー処理対応:エラー処理の流れ(修正)
 

テキストアドベンチャーゲーム エラー処理
KottonCastleEscapeのKCEMain.java)113行目~
 
・・・      
113                   //***************  
114                   //結果処理モード  
115                   case MODE_GAME_3_RES:  
116                      //結果処理モード関数呼び出し  
117                       if(execModeResult()){  
118                           //エンディング処理モードに変更する  
119                           nowMode = MODE_ENDING;  
120                       }else{  
121                           //行動処理モード(1階層目)に戻す  
122                           nowMode = MODE_GAME_1_ACT; どっちにしろ最初
のゲームモード
に戻る
123                       }  
124      
125                      break;  
・・・    
結果処理モードは、今のままでも行動処理モードに戻るので特に何もしない

 
 

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