|
SESSION 11 その20 |
練習問題 つづき |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
おっ、できたか。
じゃあ、
まず実行してみよう。
うん、特に動作は
問題ないかな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
見て!
見て! |
 |
|
|
|
|
|
|
プログラムの動作が変わらないのを実行して確認して下さい |
|
 |
|
 |
|
クイズゲーム完成 解答チェック関数化
(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つで
全く変わる。
今後もいろいろな
視点で見ていこうな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
 |
お願い
します。 |
|
|
|
|
|
|
|
|
|
お勧めの姉妹サイト
|
|
|
|
|
|
|