Javaを使ってGUI版マインスイーパを作ってます。
ゲームの初期設定で、マインを盤面全面のランダムな10マスに配置する処理が上手くいきません。
ここでは初期設定でマインを配置するコードのみ載せます
###ゲーム実行側
java
1public class TestMain { 2 static int boardsize=9; 3 4 public static void main(String[] args) { 5 Mine mines[][]; 6 mines = new Mine[boardsize][boardsize]; 7 for(int i=0;i<boardsize;i++){ 8 for(int j=0;j<boardsize;j++){ 9 mines[i][j] = new Mine(i+","+j,false); 10 //System.out.println(mines[i][j].getText()+","+mines[i][j].mineExis); 11 } 12 } 13 14 int minenum=10; 15 int m=0; //設置完了マイン数 16 Random rnd; 17 while(m<minenum){ 18 System.out.print("m="+m+":"); 19 rnd = new Random(); 20 int x = rnd.nextInt(boardsize+1); //とりあえず一つ座標を指定 21 int y = rnd.nextInt(boardsize+1); 22 23 while(mines[y][x].getMineExis()){ //すでにマインが設置されていれば何度でもやり直し 24 rnd = new Random(); 25 x = rnd.nextInt(boardsize+1); 26 y = rnd.nextInt(boardsize+1); 27 } 28 29 mines[y][x].setMineExis(true); //☆ 30 //mines[y][x].mineExis = true; 31 System.out.println(x+","+y); 32 m++; 33 } 34 } 35}
###マス情報保存クラス
Java
1public class Mine extends JButton{ 2 //JButton btn; 3 boolean mineExis; //このマスにマインはあるかどうか 4 boolean check; //このマスは調査済みかどうか 5 int num; //周りにあるマインの数 6 7 Mine(String btnName,boolean f){ 8 //btn = new JButton(btnName); 9 super(btnName); 10 mineExis=f; 11 check=f; 12 num=0; 13 } 14 15 public boolean getMineExis() { 16 return mineExis; 17 } 18 19 public void setMineExis(boolean b) { 20 this.mineExis=b; 21 } 22}
この状態で実行すると、☆マークをつけた箇所で
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExceptionというエラーが出ます。
配列の不正な場所を見ているわけではないと思うので、このエラーがなぜ出るのかがわかりません。
ご教示お願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。