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

コード10:クイズゲーム完成 区切り処理・結果表示処理関数化
コード(KotoQuizのKQMain.java)
1 現在のコード:現在のコードから 赤色の部分を削除 緑色の部分を切り取り(2のコードの同じ内容部分に貼り付けて移動) して下さい。

クイズゲーム完成 モード処理関数化
(KotoQuizのKQMain.java)12行目~
 
・・・      
012   public class KQMain {  
013      
014       //********************************************  
015       // 定数  
016       //********************************************  
017       //入力・表示処理モード  
018       private static final int EXEC_MODE_QUIZ = 1;//問題処理モード  
019       private static final int EXEC_MODE_CHECK = 2;//解答処理モード  
020       private static final int QUIZ_MAX = 4;//問題数  
021      
022       //********************************************  
023       // 変数  
024       //********************************************  
025       private static boolean loopFlg = true;//ループフラグ  
026       private static int inputNum = 0;//入力番号  
027       private static int execMode = EXEC_MODE_QUIZ;//処理モード(問題処理モードで開始)  
028      
029       private static int nowQuizNum = 0;//現在出題番号  
030       private static int correctTotal = 0;//正解数  
031      
032     /**
033       * @param args the command line arguments  
034       */  
035     public static void main(String[] args) {
036       // TODO code application logic here  
037    
038           //********************************************  
039           // メイン処理  
040         //********************************************
041           while (loopFlg) {  
042      
043               /////////////////////////////////////////////////////  
044               //実行と描画処理  
045      
046               //問題処理モード  
047             if(execMode == EXEC_MODE_QUIZ){
048      
049                   //問題処理モード関数呼び出し  
050                    execModeQuiz();  
051      
052               //解答処理モード  
053               }else if(execMode == EXEC_MODE_CHECK){  
054      
055                   //解答処理モード関数呼び出し  
056                    execModeCheck();  
057      
058               }  
059      
060               //入力番号を受け取る  
061               inputNum = scanInputData();  
062      
063               //表示終了の区切り 切り取り1
064               System.out.println("");  
065               System.out.println("######################################################");  
066               System.out.println("");  
067           }  
068      
069           //結果表示 切り取り2
070           System.out.println("");  
071           System.out.println("***************** ことくいず *****************");  
072           System.out.println("");  
073           System.out.println("      あなたの正解数は "+ correctTotal +" でした。");  
074           System.out.println("");  
075           System.out.println("***********************************************");  
076           System.out.println("");  
077           System.out.println("おしまい");  
078       }  
079      
080      /**  
081        * 解答チェック処理  
082        * @param seikaiBangou 正解の番号  
083        * @param kaitouBangou 入力番号  
084        * @param seikaiGoukei 正解数  
085        * @return seikaiGoukei 正解数  
086       */  
087       private static int checkAnswerData(int seikaiBangou,int kaitouBangou,int seikaiGoukei){  
088      
089           //解答チェック  
090           if(kaitouBangou == seikaiBangou){  
091               System.out.println("やったね!正解");  
092               seikaiGoukei += 1;//正解数加算  
093           }else{  
094               System.out.println("残念!不正解");  
095           }  
096      
097           //結果を返す  
098           return seikaiGoukei;  
099       }  
100      
101        /**  
102        * キー入力処理  
103        */  
104       private static int scanInputData(){  
105      
106           /////////////////////////////////////////////////////  
107           //キー入力処理 そのまま書き写してください ここから  
108           int tmpInputNum = 0;//入力番号初期化  
109           try {  
110               //初期化処理  
111               final int IMPUT_MAX = 3;//最大入力値  
112               //キー入力読込処理(int型)  
113               java.util.Scanner sc = new java.util.Scanner(System.in);  
114               int inputInt = sc.nextInt();  
115               //入力値チェックと入力番号への代入  
116               if (inputInt > 0 && inputInt <= IMPUT_MAX) {  
117                   tmpInputNum = inputInt;  
118               } else {  
119                   System.out.println("※ コマンドは" + IMPUT_MAX + "以下で入力して下さい ※ ");  
120               }  
121           } catch (Exception e) {  
122               System.out.println("※ 数字以外は入力しないで下さい ※ ");  
123           }  
124           //キー入力処理 そのまま書き写してください ここまで  
125           /////////////////////////////////////////////////////  
126      
127           //入力番号を返す  
128           return tmpInputNum;  
129       }  
130      
131       /**  
132       * 問題処理モード処理  
133       */  
134       private static void execModeQuiz(){  
135      
136           //見出し:現在の状況を表示する  
137           System.out.println("***************** ことくいず *****************");  
138           System.out.println("         現在、"+ (nowQuizNum + 1) +"問目です。");  
139           System.out.println("        現在の正解数は"+ correctTotal +"です。");  
140           System.out.println("***********************************************");  
141           System.out.println("");  
142           System.out.println("< 問題です >");  
143      
144           //問題を表示する  
145           switch(nowQuizNum){  
146               case 0:  
147                   System.out.println("変数の型でint型の最大値はいくつ?");  
148                   System.out.println("");  
149                   System.out.println("-----------------------------------------------");  
150                   System.out.println("1:256 2:98776342 3:2147483647");  
151      
152                   break;  
153               case 1:  
154                   System.out.println("変数の型を変換するのに使う方法はどれ?");  
155                   System.out.println("");  
156                   System.out.println("-----------------------------------------------");  
157                   System.out.println("1:キャスト 2:スコープ 3:インクリメント");  
158      
159                   break;  
160               case 2:  
161                   System.out.println("変数aが「4以上でかつ10以下」か「40未満」");  
162                   System.out.println("正しい条件式はどれ?");  
163                   System.out.println("");  
164                   System.out.println("-----------------------------------------------");  
165                   System.out.println("1:(a >= 4 || a < 10) && a < 40");  
166                   System.out.println("2:(a >= 4 || a <= 10) || a < 40");  
167                   System.out.println("3:(a >= 4 && a <= 10) || a < 40");  
168      
169                   break;  
170               case 3:  
171                   System.out.println("ことが一番好きな場所はどこ?");  
172                   System.out.println("");  
173                   System.out.println("-----------------------------------------------");  
174                   System.out.println("1:動物園 2:水族館 3:遊園地");  
175      
176                   break;  
177           }  
178           System.out.print("答え>");  
179      
180           //解答チェックモードへ変更  
181           execMode = EXEC_MODE_CHECK;  
182       }  
183      
184        /**  
185        * 解答処理モード処理  
186        */  
187       private static void execModeCheck(){  
188      
189           //解答をチェックする  
190           switch(nowQuizNum){  
191               case 0:  
192                   //正解番号チェック  
193                   correctTotal = checkAnswerData(3,inputNum,correctTotal);  
194      
195                   break;  
196               case 1:  
197                   //正解番号チェック  
198                   correctTotal = checkAnswerData(1,inputNum,correctTotal);  
199      
200                   break;  
201               case 2:  
202                   //正解番号チェック  
203                   correctTotal = checkAnswerData(3,inputNum,correctTotal);  
204      
205                   break;  
206               case 3:  
207                   //正解番号チェック  
208                   correctTotal = checkAnswerData(2,inputNum,correctTotal);  
209      
210                   break;  
211            }  
212           System.out.println("");  
213           System.out.println("-----------------------------------------------");  
214           System.out.print("< 1を入力してEnterキーを押してください >");  
215      
216           //問題を進める  
217           nowQuizNum += 1;  
218      
219           //最大数以上なら  
220           if(nowQuizNum >= QUIZ_MAX){  
221               loopFlg = false;//ゲームを終了する  
222           }  
223      
224           //問題処理モードへ変更  
225           execMode = EXEC_MODE_QUIZ;  
226       }  
227      
228   }  
・・・    
 
 
2 今回のコード:1で修正したコードに、緑色の部分に貼り付け 黄色の部分を修正 青色の部分を追加 してこの形にして下さい。

クイズゲーム完成 区切り処理・結果処理関数化
(KotoQuizのKQMain.java)12行目~
 
・・・      
012   public class KQMain {  
013      
014       //********************************************  
015       // 定数  
016       //********************************************  
017       //入力・表示処理モード  
018       private static final int EXEC_MODE_QUIZ = 1;//問題処理モード  
019       private static final int EXEC_MODE_CHECK = 2;//解答処理モード  
020       private static final int QUIZ_MAX = 4;//問題数  
021      
022       //********************************************  
023       // 変数  
024       //********************************************  
025       private static boolean loopFlg = true;//ループフラグ  
026       private static int inputNum = 0;//入力番号  
027       private static int execMode = EXEC_MODE_QUIZ;//処理モード(問題処理モードで開始)  
028      
029       private static int nowQuizNum = 0;//現在出題番号  
030       private static int correctTotal = 0;//正解数  
031      
032     /**
033       * @param args the command line arguments  
034       */  
035     public static void main(String[] args) {
036       // TODO code application logic here  
037    
038           //********************************************  
039           // メイン処理  
040         //********************************************
041           while (loopFlg) {  
042      
043               /////////////////////////////////////////////////////  
044               //実行と描画処理  
045      
046               //問題処理モード  
047             if(execMode == EXEC_MODE_QUIZ){
048      
049                   //問題処理モード関数呼び出し  
050                    execModeQuiz();  
051      
052               //解答処理モード  
053               }else if(execMode == EXEC_MODE_CHECK){  
054      
055                   //解答処理モード関数呼び出し  
056                    execModeCheck();  
057      
058               }  
059      
060               //入力番号を受け取る  
061               inputNum = scanInputData();  
062      
063               //表示終了の区切り  
064             printSeparateMark();  
065           }  
066      
067           //結果表示処理関数呼び出し  
068           printResult();  
069      
070       }  
071      
072      /**  
073        * 解答チェック処理  
074        * @param seikaiBangou 正解の番号  
075        * @param kaitouBangou 入力番号  
076        * @param seikaiGoukei 正解数  
077        * @return seikaiGoukei 正解数  
078       */  
079       private static int checkAnswerData(int seikaiBangou,int kaitouBangou,int seikaiGoukei){  
080      
081           //解答チェック  
082           if(kaitouBangou == seikaiBangou){  
083               System.out.println("やったね!正解");  
084               seikaiGoukei += 1;//正解数加算  
085           }else{  
086               System.out.println("残念!不正解");  
087           }  
088      
089           //結果を返す  
090           return seikaiGoukei;  
091       }  
092      
093        /**  
094        * キー入力処理  
095        */  
096       private static int scanInputData(){  
097      
098           /////////////////////////////////////////////////////  
099           //キー入力処理 そのまま書き写してください ここから  
100           int tmpInputNum = 0;//入力番号初期化  
101           try {  
102               //初期化処理  
103               final int IMPUT_MAX = 3;//最大入力値  
104               //キー入力読込処理(int型)  
105               java.util.Scanner sc = new java.util.Scanner(System.in);  
106               int inputInt = sc.nextInt();  
107               //入力値チェックと入力番号への代入  
108               if (inputInt > 0 && inputInt <= IMPUT_MAX) {  
109                   tmpInputNum = inputInt;  
110               } else {  
111                   System.out.println("※ コマンドは" + IMPUT_MAX + "以下で入力して下さい ※ ");  
112               }  
113           } catch (Exception e) {  
114               System.out.println("※ 数字以外は入力しないで下さい ※ ");  
115           }  
116           //キー入力処理 そのまま書き写してください ここまで  
117           /////////////////////////////////////////////////////  
118      
119           //入力番号を返す  
120           return tmpInputNum;  
121       }  
122      
123       /**  
124       * 問題処理モード処理  
125       */  
126       private static void execModeQuiz(){  
127      
128           //見出し:現在の状況を表示する  
129           System.out.println("***************** ことくいず *****************");  
130           System.out.println("         現在、"+ (nowQuizNum + 1) +"問目です。");  
131           System.out.println("        現在の正解数は"+ correctTotal +"です。");  
132           System.out.println("***********************************************");  
133           System.out.println("");  
134           System.out.println("< 問題です >");  
135      
136           //問題を表示する  
137           switch(nowQuizNum){  
138               case 0:  
139                   System.out.println("変数の型でint型の最大値はいくつ?");  
140                   System.out.println("");  
141                   System.out.println("-----------------------------------------------");  
142                   System.out.println("1:256 2:98776342 3:2147483647");  
143      
144                   break;  
145               case 1:  
146                   System.out.println("変数の型を変換するのに使う方法はどれ?");  
147                   System.out.println("");  
148                   System.out.println("-----------------------------------------------");  
149                   System.out.println("1:キャスト 2:スコープ 3:インクリメント");  
150      
151                   break;  
152               case 2:  
153                   System.out.println("変数aが「4以上でかつ10以下」か「40未満」");  
154                   System.out.println("正しい条件式はどれ?");  
155                   System.out.println("");  
156                   System.out.println("-----------------------------------------------");  
157                   System.out.println("1:(a >= 4 || a < 10) && a < 40");  
158                   System.out.println("2:(a >= 4 || a <= 10) || a < 40");  
159                   System.out.println("3:(a >= 4 && a <= 10) || a < 40");  
160      
161                   break;  
162               case 3:  
163                   System.out.println("ことが一番好きな場所はどこ?");  
164                   System.out.println("");  
165                   System.out.println("-----------------------------------------------");  
166                   System.out.println("1:動物園 2:水族館 3:遊園地");  
167      
168                   break;  
169           }  
170           System.out.print("答え>");  
171      
172           //解答チェックモードへ変更  
173           execMode = EXEC_MODE_CHECK;  
174       }  
175      
176        /**  
177        * 解答処理モード処理  
178        */  
179       private static void execModeCheck(){  
180      
181           //解答をチェックする  
182           switch(nowQuizNum){  
183               case 0:  
184                   //正解番号チェック  
185                   correctTotal = checkAnswerData(3,inputNum,correctTotal);  
186      
187                   break;  
188               case 1:  
189                   //正解番号チェック  
190                   correctTotal = checkAnswerData(1,inputNum,correctTotal);  
191      
192                   break;  
193               case 2:  
194                   //正解番号チェック  
195                   correctTotal = checkAnswerData(3,inputNum,correctTotal);  
196      
197                   break;  
198               case 3:  
199                   //正解番号チェック  
200                   correctTotal = checkAnswerData(2,inputNum,correctTotal);  
201      
202                   break;  
203            }  
204           System.out.println("");  
205           System.out.println("-----------------------------------------------");  
206           System.out.print("< 1を入力してEnterキーを押してください >");  
207      
208           //問題を進める  
209           nowQuizNum += 1;  
210      
211           //最大数以上なら  
212           if(nowQuizNum >= QUIZ_MAX){  
213               loopFlg = false;//ゲームを終了する  
214           }  
215      
216           //問題処理モードへ変更  
217           execMode = EXEC_MODE_QUIZ;  
218       }  
219      
220        /**  
221        * 区切り処理  
222        */  
223       private static void printSeparateMark(){  
224               //表示終了の区切り 貼り付け1
225               System.out.println("");  
226               System.out.println("######################################################");  
227               System.out.println("");  
228       }  
229      
230        /**  
231        * 結果表示処理  
232        */  
233       private static void printResult(){  
234           //結果表示 貼り付け2
235           System.out.println("");  
236           System.out.println("***************** ことくいず *****************");  
237           System.out.println("");  
238           System.out.println("      あなたの正解数は "+ correctTotal +" でした。");  
239           System.out.println("");  
240           System.out.println("***********************************************");  
241           System.out.println("");  
242           System.out.println("おしまい");  
243       }  
244      
245   }  
・・・    
 
 
home

広告
  サイト内検索: