importjava.util.Scanner;publicclassMinesweeper{publicstaticvoidmain(String[] args){Scanner scan =newScanner(System.in);int row =9, col =9;int[][] field =newint[row][col];int[][] mine =newint[row][col];for(int i =0; i < row; i++){for(int j =0; j < col; j++){
mine[i][j]=(int)(Math.random()*2);
field[i][j]=-1;}}System.out.println("Welcome to Minesweeper!\n"+"You have to uncover all the cells without hitting a mine.\n"+"Enter the row and column to uncover a cell.");boolean gameover =false;int remaining = row * col -countMines(mine);while(!gameover){System.out.println("Enter row (1-"+ row +") and column (1-"+ col +"):");int r = scan.nextInt()-1;int c = scan.nextInt()-1;if(r >=0&& r < row && c >=0&& c < col && field[r][c]==-1){if(mine[r][c]==1){System.out.println("BOOM! You hit a mine. Game over.");
gameover =true;}else{int mines =countAdjacentMines(mine, r, c);
field[r][c]= mines;if(mines ==0){uncoverAdjacent(field, mine, r, c);}
remaining--;}}else{System.out.println("Invalid input. Try again.");}printField(field);if(remaining ==0){System.out.println("Congratulations! You won the game.");
gameover =true;}}}privatestaticintcountMines(int[][] mine){int count =0;for(int i =0; i < mine.length; i++){for(int j =0; j < mine[0].length; j++){
count += mine[i][j];}}return count;}privatestaticintcountAdjacentMines(int[][] mine,int r,int c){int count =0;for(int i =Math.max(0, r -1); i <=Math.min(mine.length -1, r +1); i++){for(int j =Math.max(0, c -1); j <=Math.min(mine[0].length -1, c +1); j++){
count += mine[i][j];}}