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

SESSION 10 その28
プログラムの構造を見直す

さて、これで一応、
ゲームは完成したわけだけど
プログラムの構造はいまいちだ。

これは考えた流れを
そのままプログラムに
しただけだからね。


コードを書いていって
それだといろいろ無駄がある
のが分かっただろ?
えっと・・・

入力処理とか
区切り処理とか・・・

ほとんど全く
同じ処理が2つある

よね。
そうそう
そういうの。
無駄って
そういうこと?
 

クイズゲーム 完成
(KotoQuizのKQMain.java)17行目~
 
・・・    
079               /////////////////////////////////////////////////////  
080               //キー入力処理 そのまま書き写してください ここから  
081               int tmpInputNum = 0;//入力番号初期化  
082               try {  
083                   //初期化処理  
084                   final int IMPUT_MAX = 3;//最大入力値  
085                   //キー入力読込処理(int型)  
086                   java.util.Scanner sc = new java.util.Scanner(System.in);  
087                   int inputInt = sc.nextInt();  
088                   //入力値チェックと入力番号への代入  
089                   if (inputInt > 0 && inputInt <= IMPUT_MAX) {  
090                       tmpInputNum = inputInt;  
091                   } else {  
092                       System.out.println("※ コマンドは" + IMPUT_MAX + "以下で入力して下さい ※ ");  
093                   }  
094               } catch (Exception e) {  
095                   System.out.println("※ 数字以外は入力しないで下さい ※ ");  
096               }  
097               //キー入力処理 そのまま書き写してください ここまで  
098               /////////////////////////////////////////////////////  
099    
100               //入力番号を受け取る  
101               inputNum = tmpInputNum;  
102    
103               //表示終了の区切り  
104               System.out.println("");  
105               System.out.println("######################################################");  
106               System.out.println("");  
     
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
   
153               /////////////////////////////////////////////////////  
154               //キー入力処理 そのまま書き写してください ここから  
155               tmpInputNum = 0;//入力番号初期化  
156               try {  
157                   //初期化処理  
158                   final int IMPUT_MAX = 3;//最大入力値  
159                   //キー入力読込処理(int型)  
160                   java.util.Scanner sc = new java.util.Scanner(System.in);  
161                   int inputInt = sc.nextInt();  
162                   //入力値チェックと入力番号への代入  
163                   if (inputInt > 0 && inputInt <= IMPUT_MAX) {  
164                       tmpInputNum = inputInt;  
165                   } else {  
166                       System.out.println("※ コマンドは" + IMPUT_MAX + "以下で入力して下さい ※ ");  
167                   }  
168               } catch (Exception e) {  
169                   System.out.println("※ 数字以外は入力しないで下さい ※ ");  
170               }  
171               //キー入力処理 そのまま書き写してください ここまで  
172               /////////////////////////////////////////////////////  
173    
174               //入力番号を受け取る  
175               inputNum = tmpInputNum;  
176      
177               //表示終了の区切り  
178               System.out.println("");  
179               System.out.println("######################################################");  
180               System.out.println("");  
・・・  
同じ色は、ほぼ同じ内容の処理



同じ処理なら1つにしたいよな。

いくつもあると、変更がある度に
全部探して書き換えるのも大変だし、
間違いも起こしやすいからね。

まだプログラムが小さいから
いいけど、大きくなってくると
複雑で面倒になる。
小さいうちに
慣れとこう。
1箇所だけ
直したりしそう。
2つ書き換えるのは
たいへんだもんね。

あたし間違えそう。


それにほら、1回のループに
2回の入力と
2回の出力があるだろ。


1回のループに
1回のユーザーの入力
1回のコンピューターの出力

の構造になってないよな。
あー、そっか!
処理の構造の見直し
してなかったんだっけ!


そのままで作ったんだ。

思い出した。
 
クイズゲームの処理の流れ(処理の重複)


じゃあ、さっき保留した
処理の構造を
見直してみよう。
はいっ。

あたし、今なら
なぽちゃんの言ってた
こと少し分かる気がする。

無駄をなくして
もっとシンプルにできるよ。
へっ?
なんか
分かったかも。



なぽちゃんが言ってた
「画面単位」でしょ!

構造の見直し
あたしにやらせて!
今度は
できるかも!

お願い!
まあ、
やってみたまえよ。
イメージでいいから。

ククク、
また「なぽちゃん
教えて~」ってね。

別にいいけど・・・。

ほんとにできるのお~?
 
クイズゲームの処理の構造(見直し)



 

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