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

SESSION 10 その21
問題表示処理 つづき
  コードの解説

じゃあ、
追加したコードを
上から順番に見ていこう。

解説図も一緒に見てね。
今回は
表示関係の処理が
多いんだね。
 
 
 
今回のコードのポイント
 
 
・初期化処理(定数・変数の追加)
・見出し表示処理
・問題表示処理
・解答入力処理
・終了処理
・正解数表示処理
 
コードの解説図(画像をクリックで拡大表示します)
クイズゲーム 問題表示処理追加

  初期化処理(定数・変数の追加)


クイズゲーム 問題表示処理追加
(KotoQuizのKQMain.java)20行目~
 
・・・    
020           //********************************************  
021           // 定数  
022         //********************************************  
023           final int QUIZ_MAX = 3;//問題数  
024    
025           //********************************************  
026           // 変数  
027           //********************************************  
028           boolean loopFlg = true;//ループフラグ  
029           int inputNum = 0;//入力番号  
030    
031           int nowQuizNum = 0;//現在出題番号  
032           int correctTotal = 0;//正解数  
・・・  
黄色の部分は今回追加した変数・定数
 
解説図 番号1を参照して下さい
 

 
最初に、追加した変数
を見ておこう。

初期化処理に
定数 QUIZ_MAXと
変数 nowQuizNum
と correctTotal 。

合計3つ追加したよ。
 
nowQuizNumが
現在の出題番号で
correctTotal が正解数。

両方とも最初は0ね。

ゲーム全体で使うから
先頭に書いたんだ。
 


定数 QUIZ_MAXは
出題する問題数を表す値だ。
今は3問だから3ね。

この定数は終了判定で
使ってるよ。

これは
実際に出題する問題数と
同じ数にする必要がある。

問題を追加したら、
ここも変更してくれ。
どういう風に
使ってるかは
この後見るよ。
 
はいっ。

分かりました。

  見出し表示処理


クイズゲーム 問題表示処理追加
(KotoQuizのKQMain.java)42行目~
 
・・・  
042             //見出し:現在の状況を表示する  
043             System.out.println("***************** ことくいず *****************");  
044             System.out.println("         現在、"+ (nowQuizNum + 1) +"問目です。");  
045             System.out.println("        現在の正解数は"+ correctTotal +"です。");  
046             System.out.println("***********************************************");  
047             System.out.println("");  
048             System.out.println("< 問題です >");  
・・・  
解説図 番号3を参照して下さい
 

分かり
やすいよね。
次に、見出し処理を追加したよ。

問題の上に、
現在の出題番号正解数
表示させてるんだ。

簡単だけど、こういうのがあると
それっぽくなるだろ。
 
うんっ!

あった方が
ずっといいと思う!
 

  問題表示処理


クイズゲーム 問題表示処理追加
(KotoQuizのKQMain.java)50行目~
 
・・・    
050               //問題を表示する  
051               switch(nowQuizNum){  
052                   case 0:  
053                       System.out.println("変数の型でint型の最大値はいくつ?");  
054                       System.out.println("");  
055                       System.out.println("-----------------------------------------------");  
056                       System.out.println("1:256 2:98776342 3:2147483647");  
057      
058                       break;  
059                   case 1:  
060                       System.out.println("変数の型を変換するのに使う方法はどれ?");  
061                       System.out.println("");  
062                       System.out.println("-----------------------------------------------");  
063                       System.out.println("1:キャスト 2:スコープ 3:インクリメント");  
064      
065                       break;  
066                   case 2:  
067                       System.out.println("変数aが「4以上でかつ10以下」か「40未満」");  
068                       System.out.println("正しい条件式はどれ?");  
069                       System.out.println("");  
070                       System.out.println("-----------------------------------------------");  
071                       System.out.println("1:(a >= 4 || a < 10) && a < 40");  
072                       System.out.println("2:(a >= 4 || a <= 10) || a < 40");  
073                       System.out.println("3:(a >= 4 && a <= 10) || a < 40");  
074      
075                       break;  
076               }  
077               System.out.print("答え>");  
・・・  
解説図 番号4を参照して下さい
 

そうそう、
いくらでも
増やせるよ。

別に難しく
ないだろ。
はいっ。
大丈夫です。
それから、問題表示処理。
これが今回の追加のメインだな。

今回は1問づつクイズを進める
形式だからね。

現在の出題番号nowQuizNumで
switch文の表示を切り替えて
1問だけ出題させてるんだ。
 
そっか、
1問目は0番なんだね。

ここに問題を追加すれば
どんどんを増やせるんだ!
 


ちなみに、
「答え>」を表示する所は、
改行しない表示命令
print() を使ってるのに
注目してね。

場所に応じて使い分けよう。
なるほど。
println() を使うと、改行されて
カーソルが次の行に行っちゃう
んだ。

入力すると
答え>
2

ってなっちゃうんだね。

答え>2
の方がかっこいいね。
こっちの方が
よくね?
いいかも!
 

クイズゲーム 問題表示処理追加
(KotoQuizのKQMain.java)77行目~
 
・・・    
077               System.out.print("答え>");  
・・・  
改行しない表示命令 print() を使っている。
「答え>」の横に入力のカーソルを表示するため
改行しないようにした。

  解答入力処理


クイズゲーム 問題表示処理追加
(KotoQuizのKQMain.java)87行目~
 
・・・    
087               /////////////////////////////////////////////////////  
088               //キー入力処理 そのまま書き写してください ここから  
089               int tmpInputNum = 0;//入力番号初期化  
090               try {  
091                   //初期化処理  
092                   final int IMPUT_MAX = 3;//最大入力値  
093                   //キー入力読込処理(int型)  
094                   java.util.Scanner sc = new java.util.Scanner(System.in);  
095                   int inputInt = sc.nextInt();  
096                   //入力値チェックと入力番号への代入  
097                   if (inputInt > 0 && inputInt <= IMPUT_MAX) {  
098                       tmpInputNum = inputInt;  
099                   } else {  
100                       System.out.println("※ コマンドは" + IMPUT_MAX + "以下で入力して下さい ※ ");  
101                   }  
102               } catch (Exception e) {  
103                   System.out.println("※ 数字以外は入力しないで下さい ※ ");  
104               }  
105               //キー入力処理 そのまま書き写してください ここまで  
106               /////////////////////////////////////////////////////  
107    
108               //入力番号を受け取る  
109               inputNum = tmpInputNum;  
・・・  
解説図 番号6、7を参照して下さい
 
説明
飛ばすよ。
解答入力処理には、
さっきテストした入出力処理を
そのまま使う。

ここでユーザーにキーボードから
解答番号を入力してもらうんだ。

入力値はinputNumに入るよ。

ブラックボックス扱いだから
これ以上の説明ナシね。
 
ユーザーからの
入力を止まって
待ってるんだよね。
  入力されるの
ずーっと
待ってるんだ・・・

けなげだね。
 

 
 

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