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

そもそも行列をcharタイプの配列にしないのはなぜですか? 数学に関しては整数のように振る舞いますが、画面には文字として出力されます。

それ以外の場合は、必要ですSystem.out.print("| " + (char)(m[i][j]) + " | ");。文字列を適切に連結するには、整数を char にキャストするだけです。(int)('@')さらに、コードをより明確にするために、地雷をマトリックスに割り当てることができます。

これらの方法はどちらもちょっとずさんです。マインスイーパを実装する場合は、爆弾が含まれているかどうか、爆弾からの距離、およびフラグが含まれているかどうかを示すフィールドを持つ別のタイル クラスを作成します。ただし、最初は、あなたの方法で問題ありません。

于 2013-09-19T04:17:19.863 に答える
1

intにキャストするだけですchar

char ascciVal=(char)intVal;
于 2013-09-19T04:22:43.693 に答える
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 に答える