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

SESSION 11 その20
練習問題 つづき
  練習問題1:解答

なぽちゃん、
できたよ!

どうかな?
おっ、できたか。

じゃあ、
まず実行してみよう。

うん、特に動作は
問題ないかな。
見て!
見て!
 
 
コード6:クイズゲーム完成 解答チェック関数化
コードをリンク先から参照して下さい
 
プログラムの動作が変わらないのを実行して確認して下さい



クイズゲーム完成 解答チェック関数化
(KotoQuizのKQMain.java)175行目~
 
・・・      
168       private static int checkAnswerData(int seikaiBangou,int kaitouBangou ,int seikaiGoukei){  
169      
170           //解答チェック  
171           if(kaitouBangou == seikaiBangou){  
172               System.out.println("やったね!正解");  
173               seikaiGoukei += 1;//正解数加算  
174           }else{  
175               System.out.println("残念!不正解");  
176           }  
177      
178           //結果を返す  
179           return seikaiGoukei;  
180       }  
・・・    
 
 
3つの引数に
なったよ。
 
正解の番号は、
引数にして呼び出し元から
貰うようにしたよ!


こうすれば、
答えが固定じゃなくなるから
どの問題でも、この関数が
使えるよね!
 
おっ、気がついたな!

これで、チェック処理を
全部関数側でできるように
なったな。
 


クイズゲーム完成 解答チェック関数化
(KotoQuizのKQMain.java)93行目~
・・・      
093                   //解答をチェックする  
094                   switch(nowQuizNum){  
095                       case 0:  
096                           //正解番号チェック  
097                           correctTotal = checkAnswerData(3,inputNum,correctTotal);  
098      
099                           break;  
100                       case 1:  
101                           //正解番号チェック  
102                           correctTotal = checkAnswerData(1,inputNum,correctTotal);  
103      
104                           break;  
105                       case 2:  
106                           //正解番号チェック  
107                           correctTotal = checkAnswerData(3,inputNum,correctTotal);  
108      
109                           break;  
110                   }  
・・・    
 
 
どうかな。 
それから、メイン関数から
この関数を呼び出すように
変えました、


switch文の中で
解答チェック処理だった所を
解答チェック関数を
呼ぶように変えたよ。
 
それぞれのcaseで
正解番号を渡すように
した
んだな。

これで問題を増やしても
チェックできるな。
   
 


戻り値も
変数 correctTotalで
受け取ってるし。

うん、そうだな。
いいんじゃないかな。

やったー!

おっけ
おっけ


さっき作った関数より
コードすごいすっきり
したね!
無駄が無くなった!

これで改変する場合も
一箇所で済むね。


すごい、すごい!
あたしでも良くなったの
理解できる!  
嬉しいー!

あたし、
進歩してるかもー。
よくできました。

進歩してます。
そうだな、
メイン関数のコードも
だいぶ小さくなったな。


これからは
クイズの問題を追加する度に
コードの増え方に差が出るよ。
 

改変前
・・・      
097                   //解答をチェックする  
098                   switch(nowQuizNum){  
099                       case 0:  
100                           //正解番号チェック  
101                           if(inputNum == 3){  
102                               System.out.println("やったね!正解");  
103                               correctTotal += 1;//正解数加算  
104                           }else{  
105                               System.out.println("残念!不正解");  
106                           }  
107      
108                           break;  
109                       case 1:  
110                           //正解番号チェック  
111                           if(inputNum == 1){  
112                               System.out.println("やったね!正解");  
113                               correctTotal += 1;//正解数加算  
114                           }else{  
115                               System.out.println("残念!不正解");  
116                           }  
117      
118                           break;  
119                       case 2:  
120                           //正解番号チェック  
121                           if(inputNum == 3){  
122                               System.out.println("やったね!正解");  
123                               correctTotal += 1;//正解数加算  
124                           }else{  
125                               System.out.println("残念!不正解");  
126                           }  
127      
128                           break;  
129                   }  
・・・    
 
 
改変後
・・・      
093                   //解答をチェックする  
094                   switch(nowQuizNum){  
095                       case 0:  
096                           //正解番号チェック  
097                           correctTotal = checkAnswerData(3,inputNum,correctTotal);  
098      
099                           break;  
100                       case 1:  
101                           //正解番号チェック  
102                           correctTotal = checkAnswerData(1,inputNum,correctTotal);  
103      
104                           break;  
105                       case 2:  
106                           //正解番号チェック  
107                           correctTotal = checkAnswerData(3,inputNum,correctTotal);  
108      
109                           break;  
110                   }  
・・・    
 



プログラムの構造は
分ける範囲1つで
全く変わる。


今後もいろいろな
視点で見ていこうな。
はいっ。

頭を柔らかくね!
 
お願い
します。


 
 

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