0

我在 5x5 的矩阵中制作和扫雷。我随机分配了地雷,还为地雷制作了传感器,我认为它工作正常。

public Minesweeper(){

        matrix = new int [5][5];    
int minesnumber = (int)(Math.random()*10);
            for(int mines = 0 ; mines < minesnumber ; mines ++){
              int i, j;//Coordinates in the array
              do{
                  i = (int)(Math.random()*5);//random values to i and j
                  j = (int)(Math.random()*5);
              }while(matrix[i][j] == minesnumber );
              matrix[i][j] = 64;//ascii = @

              for(int a = Math.max(0, i-1); a < Math.min(5,i+2); a++){// to work on the array only
                  for(int b = Math.max(0,j-1); b < Math.min(5,j+2); b++){
                      if(matrix[a][b] != 64 && matrix[a][b]<9){// not a bomb
                          matrix[a][b]++;}
                       }
                     }
                    }
                   }
                 }

我的主要任务是打印扫雷

public static void main(String args[]){

Minesweeper matrix = new Minesweeper();


for(int i = 0 ; i<5 ; i++){
    System.out.println("\n ======================================");
    for(int j = 0 ; j<5 ; j++){
        int [][]m = matrix.getMatrix();
      System.out.print("| "  +  m[i][j]   + " | ");
    }
}
System.out.println("\n ======================================");

}

它显示了炸弹的 64 和炸弹传感器的数量,我想将 64 转换为“@”,我想使用Character.toChars(64)

所以当我打印扫雷器时,我可以看到地雷探测器和@

但我不知道在哪里使用它。或者如果有人知道更简单的方法?谢谢

4

4 回答 4

1

您可以简单地int转换为char.

char ascciVal=(char)intVal;
于 2013-09-19T04:22:43.693 回答
1

为什么不直接将矩阵设为一个类型数组char呢?它们在数学方面表现得像整数,但会作为字符打印到屏幕上。

否则,你想要System.out.print("| " + (char)(m[i][j]) + " | ");. 您只需要将整数转换为 char 即可正确连接字符串。此外,您可以将地雷分配给矩阵,(int)('@')以使您的代码更清晰。

这两种方法都有些草率。如果我要实现扫雷,我会创建一个单独的 tile 类,其中包含一个字段,指示它是否包含炸弹,或者它离炸弹有多远,以及它是否包含标志。但是,首先,您的方法很好。

于 2013-09-19T04:17:19.863 回答
0

使用以下内容显示 ascii 字符:

int yourInt = 64;
char ch = (char) yourInt;
System.out.println(ch);
于 2013-09-19T04:21:26.903 回答
0

您是否尝试过以下声明。

char ascciChar= (char)64;
于 2013-09-19T04:15:34.227 回答