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

コード8:「使う」処理(対象処理モード、結果処理モード)
コード(KottonCastleEscapeのKCEMain.java)
1 現在のコード:現在のコードから 赤色の部分を削除 緑色の部分を切り取り(2のコードの同じ内容部分に貼り付けて移動) して下さい。

テキストアドベンチャーゲーム
「見る」処理(対象処理モード、結果処理モード)
KottonCastleEscapeのKCEMain.java)12行目~
 
・・・    
012   public class KCEMain {
013  
014       //********************************************
015       //                   定数
016       //********************************************     
017       //入力・表示処理モード
018       private static final int MODE_GAME_1_ACT = 1;//行動処理モード(1階層目 どうする?行動コマンド)
019       private static final int MODE_GAME_2_TAR = 2;//対象処理モード(2階層目 なにを?対象コマンド)
020       private static final int MODE_GAME_3_RES = 3;//結果処理モード
021       //行動コマンド
022       private static final int ACT_NONE = 0;//無し
023       private static final int ACT_MOVE = 1;//移動
024       private static final int ACT_LOOK = 2;//見る
025       private static final int ACT_USE = 3;//使う
026       //対象コマンド 移動用 部屋の現在地
027       private static final int TAR_ROOM_ENTRANCE = 1;//入口
028       private static final int TAR_ROOM_PASSAGE = 2;//廊下
029       private static final int TAR_ROOM_BED = 3;//寝室
030       //対象コマンド 見る用(部屋別に用意する)
031       //入口用
032       private static final int TAR_LOOK_ENTRANCE_DOOR = 1;//ドア
033       //廊下用
034       private static final int TAR_LOOK_PASSAGE_WINDOW = 1;//窓
035       private static final int TAR_LOOK_PASSAGE_PICTURE = 2;//絵画
036       //寝室用
037       private static final int TAR_LOOK_BED_BED = 1;//ベッド
038       private static final int TAR_LOOK_BED_TABLE = 2;//テーブル
039       private static final int TAR_LOOK_BED_SAFE = 3;//金庫
040       //********************************************
041       //                   変数
042       //********************************************
043       private static int inputNum = 0;//入力番号
044       private static int nowMode = MODE_GAME_1_ACT;//現在の処理モード:最初は1階層目
045       private static int nowRoomNum = TAR_ROOM_ENTRANCE;//現在位置:ドアの部屋から開始
046       private static int keepActNum = ACT_NONE;//行動コマンド保存用:無しで初期化
047       //アイテムフラグ
048       private static boolean itemKeyFlg = false;//金庫の鍵
049       private static int tableLookCount = 0;//テーブル調査回数
050       
051       /**
052        * @param args the command line arguments
053        */
054       public static void main(String[] args) {
055           // TODO code application logic here
056  
057           //********************************************
058           //                メイン処理
059           //********************************************
060           boolean loopFlg = true;//ループフラグ
061    
062           while (loopFlg ) {
063  
064               /////////////////////////////////////////////////////
065               //実行処理(選択されたコマンドによって表示)
066               switch (nowMode) {
067                 
068                   //***************
069                   //行動処理モード
070                   case MODE_GAME_1_ACT:
071                      //行動処理モード関数呼び出し
072                      execModeAction();
073                      
074                      //対象処理モード(2階層目)に切り替える
075                      nowMode = MODE_GAME_2_TAR;
076                       
077                       break;
078                   //***************
079                   //対象処理モード
080                   case MODE_GAME_2_TAR:
081                      //対象処理モード関数呼び出し
082                      execModeTarget();
083                      
084                      //入力された行動コマンドを保存する
085                      keepActNum = inputNum;
086                      //結果処理モード(3階層目)に切り替える
087                      nowMode = MODE_GAME_3_RES;
088                      
089                      break;
090                   //***************
091                   //結果処理モード
092                   case MODE_GAME_3_RES:
093                      //結果処理モード関数呼び出し
094                      execModeResult();
095                      
096                      //行動処理モード(1階層目)に戻す
097                      nowMode = MODE_GAME_1_ACT;
098                      
099                       break;
100               }
101  
102               //キー入力処理
103               inputNum = scanInputData();
104  
105               //表示開始の区切り
106               printSeparateMark();
107    
108           }
109  
110       }
111  
112       /**
113        * キー入力処理
114        */
115       private static int scanInputData() {
116  
117           /////////////////////////////////////////////////////
118           //キー入力処理 そのまま書き写してください ここから
119           int tmpInputNum = 0;//入力番号初期化
120           while (true) {
121               try {
122                   //初期化処理
123                   final int IMPUT_MAX = 5;//最大入力値
124                   //キー入力読込処理(int型)
125                   java.util.Scanner sc = new java.util.Scanner(System.in);
126                   int inputInt = sc.nextInt();
127                   //入力値チェックと入力番号への代入
128                   if (inputInt > 0 && inputInt <= IMPUT_MAX) {
129                       tmpInputNum = inputInt;
130                       break;
131                   } else {
132                       System.out.println("※ コマンドは" + IMPUT_MAX + "以下で入力して下さい ※ ");
133                       System.out.print(">");
134                   }
135               } catch (Exception e) {
136                   System.out.println("※ 数字以外は入力しないで下さい ※ ");
137                   System.out.print(">");
138               }
139           }
140           //キー入力処理 そのまま書き写してください ここまで
141           /////////////////////////////////////////////////////
142  
143           //入力番号を返す
144           return tmpInputNum;
145       }
146  
147       /**
148        * 区切り処理
149        */
150       private static void printSeparateMark() {
151           //表示終了の区切り
152           System.out.println("");
153           System.out.println("######################################################");
154           System.out.println("");
155       }
156  
157       /**
158        * 行動処理モード
159        */
160       private static void execModeAction() {
161           //***** 部屋の状況と行動のコマンドを表示する *****
162  
163           //部屋の状況を表示(部屋ごとの処理)
164           //もし入口なら
165           if (nowRoomNum == TAR_ROOM_ENTRANCE) {
166               System.out.println("S-01:ここは入口です。");
167  
168           //もし廊下なら
169           } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
170               System.out.println("S-02:ここは廊下です。");
171  
172           //もし寝室なら
173           } else if (nowRoomNum == TAR_ROOM_BED) {
174               System.out.println("S-03:ここは寝室です。");
175           }
176  
177           //行動コマンドの一覧を表示
178           System.out.println("");
179           System.out.println("---------------------------------------------");
180           System.out.println("どうする?");
181           System.out.println("1:移動 2:見る 3:使う");
182           System.out.print(">");
183       }
184  
185      /**
186       * 対象処理モード
187       */
188      private static void execModeTarget() {
189         //***** 入力された行動コマンドから対象コマンドを表示する *****
190    
191         //対象コマンドの一覧を表示
192         System.out.println("---------------------------------------------");
193    
194         //部屋ごとの処理
195         //***************
196         //もし入口なら
197          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
198            //もし移動なら
199            if (inputNum == ACT_MOVE) {
200               selectMove();//対象モード 移動表示処理
201    
202            //もし見るなら
203            } else if (inputNum == ACT_LOOK) {
204               //全部の部屋共通の表示
205               System.out.println("何を見る?");
206               
207               //対象コマンド表示(ドア)
208               System.out.println(TAR_LOOK_ENTRANCE_DOOR + ":ドア");
209               
210            //もし使うなら
211            } else if (inputNum == ACT_USE) {
212               System.out.println("テスト:対象処理モード 使う"); //テスト用:表示確認
213    
214            }
215    
216         //***************
217         //もし廊下なら
218         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
219            //もし移動なら
220            if (inputNum == ACT_MOVE) {
221               selectMove();//対象モード 移動表示処理
222    
223            //もし見るなら
224            } else if (inputNum == ACT_LOOK) {
225                //全部の部屋共通の表示
226               System.out.println("何を見る?");
227               
228               //対象コマンド表示(窓、絵画)
229               System.out.println(TAR_LOOK_PASSAGE_WINDOW + ":窓");
230               System.out.println(TAR_LOOK_PASSAGE_PICTURE + ":絵画");
231               
232            //もし使うなら
233            } else if (inputNum == ACT_USE) {
234               System.out.println("テスト:対象処理モード 使う"); //テスト用:表示確認
235    
236            }
237    
238         //***************
239         //もし寝室なら
240         } else if (nowRoomNum == TAR_ROOM_BED) {
241            //もし移動なら
242            if (inputNum == ACT_MOVE) {
243               selectMove();//対象モード 移動表示処理
244    
245            //もし見るなら
246            } else if (inputNum == ACT_LOOK) {
247               //全部の部屋共通の表示
248               System.out.println("何を見る?");
249            
250               //対象コマンド表示(ベット、テーブル、金庫)
251               System.out.println(TAR_LOOK_BED_BED + ":ベッド");
252               System.out.println(TAR_LOOK_BED_TABLE + ":テーブル");
253               System.out.println(TAR_LOOK_BED_SAFE + ":金庫");
254               
255            //もし使うなら
256            } else if (inputNum == ACT_USE) {
257               System.out.println("テスト:対象処理モード 使う"); //テスト用:表示確認
258    
259            }
260         }
261    
262         //対象コマンド共通の表示
263         System.out.print(">");
264      }
265    
266      /**
267       * 結果処理モード
268       */
269      private static void execModeResult() {
270         //***** 入力された対象コマンド別に実行処理と表示をする *****
271    
272         //部屋ごとの処理
273         //***************
274         //もし入口なら
275         if (nowRoomNum == TAR_ROOM_ENTRANCE) {
276            //行動コマンド選択別処理:保存しておいた値を使用
277            //もし移動なら
278            if (keepActNum == ACT_MOVE) {
279               resultMove();//結果モード 移動表示処理
280    
281            //もし見るなら
282            } else if (keepActNum == ACT_LOOK) {
283               //選択処理表示
284               //ドア
285               if (inputNum == TAR_LOOK_ENTRANCE_DOOR) {
286                  System.out.println("L-01:扉です。");
287               }
288                  
289            //もし使うなら
290            } else if (keepActNum == ACT_USE) {
291               System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
292    
293            }
294    
295         //***************
296         //もし廊下なら
297         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
298            //行動コマンド選択別処理:保存しておいた値を使用
299            //もし移動なら
300            if (keepActNum == ACT_MOVE) {
301               resultMove();//結果モード 移動表示処理
302    
303            //もし見るなら
304            } else if (keepActNum == ACT_LOOK) {
305                  //選択処理表示
306                  //窓
307                  if (inputNum == TAR_LOOK_PASSAGE_WINDOW) {
308                     System.out.println("L-02:窓の外は海です。");
309    
310                  //絵画
311                  } else if (inputNum == TAR_LOOK_PASSAGE_PICTURE) {
312                     System.out.println("L-03:絵です。");
313                  }
314    
315            //もし使うなら
316            } else if (keepActNum == ACT_USE) {
317               System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
318    
319            }
320    
321         //***************
322         //もし寝室なら
323         } else if (nowRoomNum == TAR_ROOM_BED) {
324            //行動コマンド選択別処理:保存しておいた値を使用
325            //もし移動なら
326            if (keepActNum == ACT_MOVE) {
327               resultMove();//結果モード 移動表示処理
328    
329            //もし見るなら
330            } else if (keepActNum == ACT_LOOK) {       
331               //選択処理表示
332               //ベッド
333               if (inputNum == TAR_LOOK_BED_BED) {
334                  System.out.println("L-04:大きなベッドです。");
335    
336               //テーブル
337               } else if (inputNum == TAR_LOOK_BED_TABLE) {
338                  System.out.println("L-05:何も無いテーブルです。");
339    
340                  tableLookCount += 1;//見るカウンタを加算
341    
342                  //見るカウントチェック
343                  if (tableLookCount == 2) {
344                     System.out.println("L-06:あ、そう言えば、・・・");
345    
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                  }
357    
358               //金庫
359               } else if (inputNum == TAR_LOOK_BED_SAFE) {
360                  System.out.println("L-08:開けるには暗証番号と鍵が必要です。");
361               }
362    
363            //もし使うなら
364            } else if (keepActNum == ACT_USE) {
365               System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
366    
367            }
368         }
369    
370         //共通の処理
371         System.out.println("");
372         System.out.println("---------------------------------------------");
373         System.out.println("-- 1を入力してEnterキーを押してください ---");
374         System.out.print(">");
375      }
376    
377      /**
378       * 対象処理モード 移動表示処理
379       */
380      private static void selectMove() {
381         //対象コマンド移動先表示
382         System.out.println("どの部屋に移動する?");
383         System.out.println(TAR_ROOM_ENTRANCE + ":入口");
384         System.out.println(TAR_ROOM_PASSAGE + ":廊下");
385         System.out.println(TAR_ROOM_BED + ":寝室");
386      }
387      
388      /**
389       * 結果処理モード 移動表示処理
390       */
391      private static void resultMove() {
392         //全部の部屋共通の表示
393         System.out.println("M-01:別の部屋に行きます。");
394    
395         //現在の部屋を変更する
396          nowRoomNum = inputNum;
397      }
398      
399   }
400    
401    
 
 
2 今回のコード:1で修正したコードに、緑色の部分に貼り付け 黄色の部分を修正 青色の部分を追加 してこの形にして下さい。

テキストアドベンチャーゲーム
「使う」処理(対象処理モード、結果処理モード)
KottonCastleEscapeのKCEMain.java)12行目~
 
・・・    
012   public class KCEMain {
013  
014       //********************************************
015       //                   定数
016       //********************************************     
017       //入力・表示処理モード
018       private static final int MODE_GAME_1_ACT = 1;//行動処理モード(1階層目 どうする?行動コマンド)
019       private static final int MODE_GAME_2_TAR = 2;//対象処理モード(2階層目 なにを?対象コマンド)
020       private static final int MODE_GAME_3_RES = 3;//結果処理モード
021       //行動コマンド
022       private static final int ACT_NONE = 0;//無し
023       private static final int ACT_MOVE = 1;//移動
024       private static final int ACT_LOOK = 2;//見る
025       private static final int ACT_USE = 3;//使う
026       //対象コマンド 移動用 部屋の現在地
027       private static final int TAR_ROOM_ENTRANCE = 1;//入口
028       private static final int TAR_ROOM_PASSAGE = 2;//廊下
029       private static final int TAR_ROOM_BED = 3;//寝室
030       //対象コマンド 見る用(部屋別に用意する)
031       //入口用
032       private static final int TAR_LOOK_ENTRANCE_DOOR = 1;//ドア
033       //廊下用
034       private static final int TAR_LOOK_PASSAGE_WINDOW = 1;//窓
035       private static final int TAR_LOOK_PASSAGE_PICTURE = 2;//絵画
036       //寝室用
037       private static final int TAR_LOOK_BED_BED = 1;//ベッド
038       private static final int TAR_LOOK_BED_TABLE = 2;//テーブル
039       private static final int TAR_LOOK_BED_SAFE = 3;//金庫
040       //対象コマンド 使う用
041       private static final int TAR_USE_ITEM_CODE_5963 = 1;//暗証番号:5963(ごくろうさん)
042       private static final int TAR_USE_ITEM_CODE_3156 = 2;//暗証番号:3156(サイコロ)
043       private static final int TAR_USE_ITEM_CODE_3150 = 3;//暗証番号:3150(最高)
044       private static final int TAR_USE_ITEM_KEY = 4;//金庫の鍵
045       private static final int TAR_USE_ITEM_BOM = 5;//爆弾
046       //********************************************
047       //                   変数
048       //********************************************
049       private static int inputNum = 0;//入力番号
050       private static int nowMode = MODE_GAME_1_ACT;//現在の処理モード:最初は1階層目
051       private static int nowRoomNum = TAR_ROOM_ENTRANCE;//現在位置:ドアの部屋から開始
052       private static int keepActNum = ACT_NONE;//行動コマンド保存用:無しで初期化
053       //アイテムフラグ
054       private static boolean itemKeyFlg = false;//金庫の鍵
055       private static boolean itemBomFlg = false;//爆弾
056       private static int tableLookCount = 0;//テーブル調査回数
057       
058       /**
059        * @param args the command line arguments
060        */
061       public static void main(String[] args) {
062           // TODO code application logic here
063  
064           //********************************************
065           //                メイン処理
066           //********************************************
067           boolean loopFlg = true;//ループフラグ
068    
069           while (loopFlg ) {
070  
071               /////////////////////////////////////////////////////
072               //実行処理(選択されたコマンドによって表示)
073               switch (nowMode) {
074                 
075                   //***************
076                   //行動処理モード
077                   case MODE_GAME_1_ACT:
078                      //行動処理モード関数呼び出し
079                      execModeAction();
080                      
081                      //対象処理モード(2階層目)に切り替える
082                      nowMode = MODE_GAME_2_TAR;
083                       
084                       break;
085                   //***************
086                   //対象処理モード
087                   case MODE_GAME_2_TAR:
088                      //対象処理モード関数呼び出し
089                      execModeTarget();
090                      
091                      //入力された行動コマンドを保存する
092                      keepActNum = inputNum;
093                      //結果処理モード(3階層目)に切り替える
094                      nowMode = MODE_GAME_3_RES;
095                      
096                      break;
097                   //***************
098                   //結果処理モード
099                   case MODE_GAME_3_RES:
100                      //結果処理モード関数呼び出し
101                      execModeResult();
102                      
103                      //行動処理モード(1階層目)に戻す
104                      nowMode = MODE_GAME_1_ACT;
105                      
106                       break;
107               }
108  
109               //キー入力処理
110               inputNum = scanInputData();
111  
112               //表示開始の区切り
113               printSeparateMark();
114    
115           }
116  
117       }
118  
119       /**
120        * キー入力処理
121        */
122       private static int scanInputData() {
123  
124           /////////////////////////////////////////////////////
125           //キー入力処理 そのまま書き写してください ここから
126           int tmpInputNum = 0;//入力番号初期化
127           while (true) {
128               try {
129                   //初期化処理
130                   final int IMPUT_MAX = 5;//最大入力値
131                   //キー入力読込処理(int型)
132                   java.util.Scanner sc = new java.util.Scanner(System.in);
133                   int inputInt = sc.nextInt();
134                   //入力値チェックと入力番号への代入
135                   if (inputInt > 0 && inputInt <= IMPUT_MAX) {
136                       tmpInputNum = inputInt;
137                       break;
138                   } else {
139                       System.out.println("※ コマンドは" + IMPUT_MAX + "以下で入力して下さい ※ ");
140                       System.out.print(">");
141                   }
142               } catch (Exception e) {
143                   System.out.println("※ 数字以外は入力しないで下さい ※ ");
144                   System.out.print(">");
145               }
146           }
147           //キー入力処理 そのまま書き写してください ここまで
148           /////////////////////////////////////////////////////
149  
150           //入力番号を返す
151           return tmpInputNum;
152       }
153  
154       /**
155        * 区切り処理
156        */
157       private static void printSeparateMark() {
158           //表示終了の区切り
159           System.out.println("");
160           System.out.println("######################################################");
161           System.out.println("");
162       }
163  
164       /**
165        * 行動処理モード
166        */
167       private static void execModeAction() {
168           //***** 部屋の状況と行動のコマンドを表示する *****
169  
170           //部屋の状況を表示(部屋ごとの処理)
171           //もし入口なら
172           if (nowRoomNum == TAR_ROOM_ENTRANCE) {
173               System.out.println("S-01:ここは入口です。");
174  
175           //もし廊下なら
176           } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
177               System.out.println("S-02:ここは廊下です。");
178  
179           //もし寝室なら
180           } else if (nowRoomNum == TAR_ROOM_BED) {
181               System.out.println("S-03:ここは寝室です。");
182           }
183  
184           //行動コマンドの一覧を表示
185           System.out.println("");
186           System.out.println("---------------------------------------------");
187           System.out.println("どうする?");
188           System.out.println("1:移動 2:見る 3:使う");
189           System.out.print(">");
190       }
191  
192      /**
193       * 対象処理モード
194       */
195      private static void execModeTarget() {
196         //***** 入力された行動コマンドから対象コマンドを表示する *****
197    
198         //対象コマンドの一覧を表示
199         System.out.println("---------------------------------------------");
200    
201         //部屋ごとの処理
202         //***************
203         //もし入口なら
204         if (nowRoomNum == TAR_ROOM_ENTRANCE) {
205            //もし移動なら
206            if (inputNum == ACT_MOVE) {
207               selectMove();//対象モード 移動表示処理
208    
209            //もし見るなら
210            } else if (inputNum == ACT_LOOK) {
211               //全部の部屋共通の表示
212               System.out.println("何を見る?");
213               
214               //対象コマンド表示(ドア)
215               System.out.println(TAR_LOOK_ENTRANCE_DOOR + ":ドア");
216               
217            //もし使うなら
218            } else if (inputNum == ACT_USE) {
219               selectUse();//対象モード 使う表示処理
220            }
221    
222         //***************
223         //もし廊下なら
224         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
225            //もし移動なら
226            if (inputNum == ACT_MOVE) {
227               selectMove();//対象モード 移動表示処理
228    
229            //もし見るなら
230            } else if (inputNum == ACT_LOOK) {
231               //全部の部屋共通の表示
232               System.out.println("何を見る?");
233               
234               //対象コマンド表示(窓、絵画)
235               System.out.println(TAR_LOOK_PASSAGE_WINDOW + ":窓");
236               System.out.println(TAR_LOOK_PASSAGE_PICTURE + ":絵画");
237               
238            //もし使うなら
239            } else if (inputNum == ACT_USE) {
240               selectUse();//対象モード 使う表示処理
241            }
242    
243         //***************
244         //もし寝室なら
245         } else if (nowRoomNum == TAR_ROOM_BED) {
246            //もし移動なら
247            if (inputNum == ACT_MOVE) {
248               selectMove();//対象モード 移動表示処理
249    
250            //もし見るなら
251            } else if (inputNum == ACT_LOOK) {
252               //全部の部屋共通の表示
253               System.out.println("何を見る?");
254            
255               //対象コマンド表示(ベット、テーブル、金庫)
256               System.out.println(TAR_LOOK_BED_BED + ":ベッド");
257               System.out.println(TAR_LOOK_BED_TABLE + ":テーブル");
258               System.out.println(TAR_LOOK_BED_SAFE + ":金庫");
259               
260            //もし使うなら
261            } else if (inputNum == ACT_USE) {
262               selectUse();//対象モード 使う表示処理
263            }
264         }
265    
266         //対象コマンド共通の表示
267         System.out.print(">");
268      }
269    
270      /**
271       * 結果処理モード
272       */
273      private static void execModeResult() {
274         //***** 入力された対象コマンド別に実行処理と表示をする *****
275    
276         //部屋ごとの処理
277         //***************
278         //もし入口なら
279         if (nowRoomNum == TAR_ROOM_ENTRANCE) {
280            //行動コマンド選択別処理:保存しておいた値を使用
281            //もし移動なら
282            if (keepActNum == ACT_MOVE) {
283               resultMove();//結果モード 移動表示処理
284    
285            //もし見るなら
286            } else if (keepActNum == ACT_LOOK) {
287               //選択処理表示
288               //ドア
289               if (inputNum == TAR_LOOK_ENTRANCE_DOOR) {
290                  System.out.println("L-01:扉です。");
291               }
292                  
293            //もし使うなら
294            } else if (keepActNum == ACT_USE) {
295               //アイテム処理
296               //暗証番号
297               if (inputNum == TAR_USE_ITEM_CODE_5963
298                     || inputNum == TAR_USE_ITEM_CODE_3156
299                     || inputNum == TAR_USE_ITEM_CODE_3150) {
300                  System.out.println("U-01:使えません。");
301    
302               //鍵
303               } else if (inputNum == TAR_USE_ITEM_KEY) {
304                  System.out.println("U-02:ドアの鍵穴には入らない。");
305    
306               //爆弾
307               } else if (inputNum == TAR_USE_ITEM_BOM) {
308                  System.out.println("U-03:爆弾でドアを吹き飛ばしました。");
309                  System.out.println("脱出しました。エンディングへ");
310               }
311            }
312    
313         //***************
314         //もし廊下なら
315         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
316            //行動コマンド選択別処理:保存しておいた値を使用
317            //もし移動なら
318            if (keepActNum == ACT_MOVE) {
319               resultMove();//結果モード 移動表示処理
320    
321            //もし見るなら
322            } else if (keepActNum == ACT_LOOK) {
323                  //選択処理表示
324                  //窓
325                   if (inputNum == TAR_LOOK_PASSAGE_WINDOW) {
326                     System.out.println("L-02:窓の外は海です。");
327    
328                  //絵画
329                  } else if (inputNum == TAR_LOOK_PASSAGE_PICTURE) {
330                     System.out.println("L-03:絵です。");
331                  }
332    
333            //もし使うなら
334            } else if (keepActNum == ACT_USE) {
335               //行動コマンド選択別処理:保存しておいた値を使用
336               //アイテム処理
337               //暗証番号
338               if (inputNum == TAR_USE_ITEM_CODE_5963
339                     || inputNum == TAR_USE_ITEM_CODE_3156
340                     || inputNum == TAR_USE_ITEM_CODE_3150) {
341                  System.out.println("U-01:使えません。");
342    
343               //鍵
344               } else if (inputNum == TAR_USE_ITEM_KEY) {
345                  System.out.println("U-04:ここには鍵を使うものが無い。");
346    
347               //爆弾
348               } else if (inputNum == TAR_USE_ITEM_BOM) {
349                  System.out.println("U-05:爆発させても意味が無い。");
350               }
351            }
352    
353         //***************
354         //もし寝室なら
355         } else if (nowRoomNum == TAR_ROOM_BED) {
356            //行動コマンド選択別処理:保存しておいた値を使用
357            //もし移動なら
358            if (keepActNum == ACT_MOVE) {
359               resultMove();//結果モード 移動表示処理
360    
361            //もし見るなら
362            } else if (keepActNum == ACT_LOOK) {       
363               //選択処理表示
364               //ベッド
365               if (inputNum == TAR_LOOK_BED_BED) {
366                  System.out.println("L-04:大きなベッドです。");
367    
368               //テーブル
369               } else if (inputNum == TAR_LOOK_BED_TABLE) {
370                  System.out.println("L-05:何も無いテーブルです。");
371    
372                  tableLookCount += 1;//見るカウンタを加算
373    
374                  //見るカウントチェック
375                  if (tableLookCount == 2) {
376                     System.out.println("L-06:あ、そう言えば、・・・");
377    
378                  //3回以上見たら鍵取得
379                  } else if (tableLookCount >= 3) {
380                      tableLookCount = 3;//何回見てもこれ以上大きくさせない
381    
382                     //鍵をまだ見つけてなければ
383                     if (!itemKeyFlg) {
384                        System.out.println("L-07:<アイテム>:金庫の鍵を手に入れました");
385    
386                         itemKeyFlg = true;//キーアイテムフラグを立てる
387                     }
388                  }
389    
390               //金庫
391               } else if (inputNum == TAR_LOOK_BED_SAFE) {
392                  System.out.println("L-08:開けるには暗証番号と鍵が必要です。");
393               }
394    
395            //もし使うなら
396            } else if (keepActNum == ACT_USE) {
397               //アイテム処理
398               //暗証番号(5963)
399               if (inputNum == TAR_USE_ITEM_CODE_5963) {
400                  //暗証番号:鍵を持っている場合のみ入力可能
401                  if (itemKeyFlg) {
402                     System.out.println("U-06:この番号じゃない。");
403    
404                  } else {
405                     System.out.println("U-09:鍵を持っていないと入力しても意味がありません。");
406                  }
407    
408               //暗証番号(3156)
409               } else if (inputNum == TAR_USE_ITEM_CODE_3156) {
410                  //暗証番号:鍵を持っている場合のみ入力可能
411                  if (itemKeyFlg) {
412                     System.out.println("U-07:<アイテム>:爆弾を手に入れました");
413    
414                     itemBomFlg = true;//爆弾アイテムフラグを立てる
415    
416                  } else {
417                     System.out.println("U-09:鍵を持っていないと入力しても意味がありません。");
418                  }
419    
420               //暗証番号(3150)
421               } else if (inputNum == TAR_USE_ITEM_CODE_3150) {
422                  //暗証番号:鍵を持っている場合のみ入力可能
423                  if (itemKeyFlg) {
424                     System.out.println("U-08:この番号じゃない。");
425    
426                  } else {
427                     System.out.println("U-09:鍵を持っていないと入力しても意味がありません。");
428                  }
429    
430               //鍵
431               } else if (inputNum == TAR_USE_ITEM_KEY) {
432                  System.out.println("U-10:金庫の鍵はこれでOKです。");
433    
434               //爆弾
435               } else if (inputNum == TAR_USE_ITEM_BOM) {
436                  System.out.println("U-11:ベッドを壊さないで下さい。");
437               }
438            }
439         }
440    
441         //共通の処理
442         System.out.println("");
443         System.out.println("---------------------------------------------");
444         System.out.println("-- 1を入力してEnterキーを押してください ---");
445         System.out.print(">");
446      }
447    
448      /**
449       * 対象処理モード 移動表示処理
450       */
451      private static void selectMove() {
452         //対象コマンド移動先表示
453         System.out.println("どの部屋に移動する?");
454         System.out.println(TAR_ROOM_ENTRANCE + ":入口");
455         System.out.println(TAR_ROOM_PASSAGE + ":廊下");
456         System.out.println(TAR_ROOM_BED + ":寝室");
457      }
458      
459      /**
460       * 対象処理モード 使う表示処理
461       */
462      private static void selectUse() {
463         //全部の部屋共通の表示
464         System.out.println("何を使う?");
465    
466         //暗証番号表示
467         System.out.println(TAR_USE_ITEM_CODE_5963 + ":金庫の暗証番号:5963");
468         System.out.println(TAR_USE_ITEM_CODE_3156 + ":金庫の暗証番号:3156");
469         System.out.println(TAR_USE_ITEM_CODE_3150 + ":金庫の暗証番号:3150");
470    
471         //アイテムの取得有無
472         //金庫の鍵
473         if (itemKeyFlg) {
474            System.out.println(TAR_USE_ITEM_KEY + ":金庫の鍵");
475         }
476         //爆弾
477         if (itemBomFlg) {
478            System.out.println(TAR_USE_ITEM_BOM + ":爆弾");
479         }
480    
481      }
482      
483      /**
484       * 結果処理モード 移動表示処理
485       */
486      private static void resultMove() {
487         //全部の部屋共通の表示
488         System.out.println("M-01:別の部屋に行きます。");
489    
490         //現在の部屋を変更する
491         nowRoomNum = inputNum;
492      }
493      
494   }
495    
496    
 
 
home

広告
  サイト内検索: