//************************************************************* // Java console application // 「HitNumberEx」 // //          作 成 者:ルート高菜    //          作成開始月:2006/4 //          最終更新月:2006/4 [TN074/J64] //************************************************************* import java.io.*; public class HitNumberEx { // public static void main(String[] args) throws IOException { //標準入力 BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); // HitNumberEx ex=new HitNumberEx(); // String inputData; //***「初めから」ループ*** while(true){ //タイトル System.out.println(""); System.out.println("************************"); System.out.println("*** 数当てゲームEx ***"); System.out.println("************************"); printHelp(); //***「桁数入力」ループ*** loopF: while(true){ //桁数決定 System.out.println(""); System.out.print("何桁にしますか?("+HitNumberEx.FIGURE_MIN+"-"+HitNumberEx.FIGURE_MAX+"):"); // inputData=(br.readLine()).toLowerCase(); if(inputData.equals("s")){ break loopF; }else if(inputData.equals("f")){ continue; }else if(inputData.equals("n")){ System.out.println("先に桁数を決めてください"); continue; }else if(inputData.equals("e")){ return; }else if(inputData.equals("h")){ printHelp(); continue; } // try{ if(!ex.setFigure(Integer.parseInt(inputData))){ System.out.println(HitNumberEx.FIGURE_MIN+"〜"+HitNumberEx.FIGURE_MAX+"の整数を入力してください"); continue; } }catch(NumberFormatException e){ System.out.println(HitNumberEx.FIGURE_MIN+"〜"+HitNumberEx.FIGURE_MAX+"の整数を入力してください"); continue; } //***「新規問題」ループ*** loopN: while(true){ // ex.formatData(); // System.out.println(""); System.out.println(ex.getFigure()+"桁の数字を"+HitNumberEx.TRIAL_MAX+"回以内で当ててください"); //***「試行」ループ*** while(true){ // ex.printPassage(); // System.out.print((ex.getTrial()+1)+"回目入力:"); // inputData=(br.readLine()).toLowerCase(); if(inputData.equals("s")){ break loopF; }else if(inputData.equals("f")){ break loopN; }else if(inputData.equals("n")){ ex.printAnswer(); break; }else if(inputData.equals("e")){ return; }else if(inputData.equals("h")){ printHelp(); continue; } // if(!ex.setInputData(inputData)){ System.out.println(ex.getFigure()+"桁の数字を入力してください"); continue; } // if(ex.judgeCorrect()){ System.out.println(""); System.out.println("正解です!"); }else{ if(ex.nextTrial()){ continue; }else{ System.out.println(""); System.out.println("残念でした"); ex.printAnswer(); } } // //終了確認 System.out.println(""); System.out.print("終了しますか?(y/n):"); inputData=(br.readLine()).toLowerCase(); if(inputData.equals("s")){ break loopF; }else if(inputData.equals("f")){ break loopN; }else if(inputData.equals("n")){ break; }else if(inputData.equals("e") || inputData.equals("y")){ return; }else if(inputData.equals("h")){ printHelp(); continue; } } } } } } //ヘルプ表示 static void printHelp(){ System.out.println(""); System.out.println("s:最初から f:桁数変更 e:終了"); System.out.println("n:解答表示し新規問題 h:ヘルプ"); } //-------------------------------------------- //クラス //-------------------------------------------- // static final int TRIAL_MAX=10; static final int FIGURE_MAX=5; static final int FIGURE_MIN=3; // private int figure; //桁数 private int answer[]; private String input[]; private int hit[]; private int blow[]; private int trial; //試行回数 //コンストラクタ public HitNumberEx() { } //試行回数取得 public int getTrial(){ return trial; } //入力値を判定 public boolean setInputData(String s){ if(s.length()==figure){ input[trial]=s; //判定 hit[trial]=0; blow[trial]=0; for(int f=0;f=FIGURE_MIN || f<=FIGURE_MAX){ figure=f; return true; }else{ return false; } } //初期化 public void formatData(){ answer=getAnswer(figure); input=new String[TRIAL_MAX]; hit=new int[TRIAL_MAX]; blow=new int[TRIAL_MAX]; trial=0; } //今までの結果を表示 public void printPassage(){ System.out.println(""); for(int t=0;t