###前提・実現したいこと
Javaで5*5のマス目から当たりを見つけるプログラムを作りたいと考えています。
インターネットで下記のプログラムを見つけ応用できないかと思っています。
プログラムで追加したいこと
・5*5のマスの下に当たりの数を表示する 例 当たり:
・見つけた当たりの数を表示する 例 見つけた当たり:
・すべての当たりを見つけたらMission Conpleteと表示し、すべての当たりを見つけるまでに選択した回数を表示する 例 あなたが当たりをすべて見つけるまでX回かかりました。
以上です。よろしくお願いします。
###発生している問題・エラーメッセージ
###該当のソースコード
Java
1import java.io.BufferedReader; 2import java.io.InputStreamReader; 3import java.util.Random; 4 5 6public class sagasu2 { 7 //public class Game { 8 9 private boolean map[][]; 10 private boolean picked[][]; 11 12 public void init(int size) { 13 if (size > 0) { 14 map = new boolean[size][size]; 15 picked = new boolean[size][size]; 16 Random rand = new Random(); 17 int x = rand.nextInt(size);//当たりの位置 18 int y = rand.nextInt(size); 19 map[x][y] = true; 20 } else 21 System.out.println("No Such Place!!"); 22 23 } 24 25 public boolean guess(int x, int y) throws NumberFormatException{ 26 if (map != null && x >= 0 && x < map.length && y >= 0 27 && y < map[0].length) { 28 picked[x][y] = true; 29 return map[x][y]; 30 } else throw new NumberFormatException(); 31 } 32 33 public boolean renderGrid() { 34 String s = " "; 35 if (picked == null) 36 return false; 37 for (int i = 0; i < picked.length; i++) 38 s += " "+i+" "; 39 s+="\n"; 40 for (int i = 0; i < picked.length; i++) { 41 s += i+"|"; 42 for (int j = 0; j < picked[i].length; j++) { 43 if (picked[i][j]) 44 s += " X |"; 45 else 46 s += " ? |"; 47 } 48 s += "\n"; 49 } 50 System.out.println(s); 51 return true; 52 } 53 54 public static void main(String[] args) { 55 try { 56 sagasu2 g = new sagasu2(); 57 int size = 5; 58 g.init(size); 59 BufferedReader br = new BufferedReader(new InputStreamReader( 60 System.in)); 61 int x = -1; 62 int y = -1; 63 System.out.println("java TreasureHunter"); 64 while (true) { 65 try { 66 g.renderGrid(); 67 //当たりの数 68 //見つけた数 69 //同じところを選んだらAlready Selected!! 70 //当たりをすべて見つけたら☆☆Mission Complete!!☆☆と表示.クリックした回数を表示 71 System.out.print("縦の位置は?"); 72 x = Integer.parseInt(br.readLine()); 73 System.out.print("横の位置は?"); 74 y = Integer.parseInt(br.readLine()); 75 76 if(g.guess(x, y)){ 77 System.out.println("\n正解!"); 78 //for(int i = 0; i<g.length; i++){ 79 //System.out.println("Founded :" + g.length); 80 System.out.print("続ける(Y)?"); 81 if(!br.readLine().equals("Y")){ 82 break; 83 }else g.init(size); 84 85 }else System.out.println("\nはずれ!\n\n" + 86 ""); 87 } catch (NumberFormatException e) { 88 System.out.println("ERROR : 位置を確認して下さい\n"); 89 } 90 91 } 92 93 } catch (Exception e) { 94 e.printStackTrace(); 95 } 96 } 97 98 }
###試したこと
見つけた当たりや見つけるまでに選択した回数をfor文で回してできるかと思いましたがうまくいきませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Eclipseで開発しています
回答1件
あなたの回答
tips
プレビュー