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

SESSION 10 その33
モード別処理 つづき
  コードの解説

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

解説図も一緒に見てね。
ループの中で
処理を切り替える
方法ね。
 
 
 
 
今回のコードのポイント
 
・初期化処理(定数・変数の追加)
・モード別処理
 
コードの解説図(画像をクリックで拡大表示します)
 クイズゲーム 完成(モード別処理)1
 
 クイズゲーム 完成(モード別処理)2

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


クイズゲーム 完成(モード別処理)
(KotoQuizのKQMain.java)20行目~
 
・・・      
020           //********************************************  
021           // 定数  
022           //********************************************  
023           //入力・表示処理モード  
024           final int EXEC_MODE_QUIZ = 1;//問題処理モード  
025           final int EXEC_MODE_CHECK = 2;//解答処理モード  
026           final int QUIZ_MAX = 3;//問題数  
027      
028           //********************************************  
029           // 変数  
030           //********************************************  
031           boolean loopFlg = true;//ループフラグ  
032           int inputNum = 0;//入力番号  
033           int execMode = EXEC_MODE_QUIZ;//処理モード(問題処理モードで開始)  
034      
035           int nowQuizNum = 0;//現在出題番号  
036           int correctTotal = 0;//正解数  
・・・    
黄色の部分は今回追加した変数・定数
 
解説図 初期化処理を参照して下さい
 
 
 
今回、いくつか
モード処理管理用の変数を
追加したよ。


最初は、問題処理モードで
開始ね。
 
現在の処理モードを
表す変数execMode。

各モードを表す定数
EXEC_MODE_QUIZと
EXEC_MODE_CHECK
を追加したんだね。
 


execModeの値が
「1」なら
EXEC_MODE_QUIZ
で、問題処理モード
なんだね。
そうそう。

でも、定数の数字自体
には意味はない
よ。
if文で切り替えるための
単なるフラグだからね。

モード用定数の中で
値が重ならなきゃ
100と10でもOK。
EXEC_MODE_QUIZ
EXEC_MODE_CHECK
の数値が
重ならなきゃ
いいんだ。
そいうこと。

目印ね。
 

クイズゲーム 完成(モード別処理)
(KotoQuizのKQMain.java)24行目~
 
・・・      
024           final int EXEC_MODE_QUIZ = 100;//問題処理モード  
025           final int EXEC_MODE_CHECK = 10;//解答処理モード  
・・・    
数値に意味は無い。重ならなければどんな値でも可。


 
モード用定数の中で
値を重ねちゃ絶対にダメだよ。

if文で判定できなくなるからね。

特に理由がなければ
値は切り替える順番の並びで
連番にしておこう。


分かりづらくなるだけからね。
 
両方「1」モードに
なっちゃったってことね。

これだと、ずっと上のifが
実行されちゃうから
きちんと判別できないね。
   
 
 

定数を同じ値にした場合
 
・・・      
024           final int EXEC_MODE_QUIZ = 1;//問題処理モード  
025           final int EXEC_MODE_CHECK = 1;//解答処理モード  
・・・    
 
以下のコードと同じ意味になる
・・・      
051               //問題処理モード  
052             if(execMode == 1){
     
094               //解答処理モード  
095               }else if(execMode == 1){  
・・・    
定数を同じ値「1」にした場合、両方とも「1」になり
if
文でモード判定できなくなる


それから・・・

今回のコードなら
定数の見出しが
変数の見出しより上の
理由が分かる
よな。
あ、そっか。

定数の方を
後で宣言してたら
変数の初期化に
使えない
もんね
そういうこと
順番が
重要なんだね。
 

クイズゲーム 完成(モード別処理)
(KotoQuizのKQMain.java)20行目~
 
宣言は、定数、変数の順にすること
・・・      
020           //********************************************  
021           // 定数  
022           //********************************************  
023           //入力・表示処理モード  
024           final int EXEC_MODE_QUIZ = 1;//問題処理モード  
025           final int EXEC_MODE_CHECK = 2;//解答処理モード  
     
028           //********************************************  
029           // 変数  
030           //********************************************  
     
033           int execMode = EXEC_MODE_QUIZ;//処理モード(問題処理モードで開始)  
034      
・・・    
宣言した定数を変数の初期化で利用している。
定数と変数の位置が逆の場合、
宣言されていなくなるので初期化に利用できなくなる。

 
 

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