Я новичок в Java и в настоящее время работаю над небольшим начинающим проектом.Я должен создать игру Java для Minesweeper.Тем не менее, я искал, чтобы изменить целое число «0» на доске игры на пустое место.Может быть, вы, ребята, можете помочь мне с этим.Спасибо
public class Game {
private Gameloop gameloop;
boolean finish = false;
boolean win = false;
int turn=0;
public Game(){
gameloop = new Gameloop();
Play(gameloop);
}
public void Play(Gameloop gameloop){
do{
turn++;
System.out.println("There are a total of 10 mines in the mine field");
gameloop.show();
finish = gameloop.checkLocation();
if(!finish){
gameloop.numberOfMines();
finish = gameloop.win();
}
}while(!finish);
if(gameloop.win()){
System.out.println("You Win!");
gameloop.showMines();
} else {
System.out.println("Game Over!");
gameloop.showMines();
}
}
public class Gameloop {
private int[][] mines;
private char[][] boardgame;
private int Line, Column;
Random random = new Random();
Scanner input = new Scanner(System.in);
public Gameloop (){
mines = new int[12][12];
boardgame = new char[12][12];
startMines();
randomFillGrid();
fillTips();
startBoard();
}
public boolean win(){
int count=0;
for(int line = 1 ; line < 11 ; line++)
for(int column = 1 ; column < 11 ; column++)
if(boardgame[line][column]=='_')
count++;
if(count == 12)
return true;
else
return false;
}
public void numberOfMines(){
for(int i=-1 ; i<2 ; i++)
for(int j=-1 ; j<2 ; j++)
if( (mines[Line+i][Column+j] != -1) && (Line != 0 && Line != 11 && Column != 0 && Column != 11) )
boardgame[Line+i][Column+j]=Character.forDigit(mines[Line+i][Column+j], 12);
}
public int getPosition(int Line, int Column){
return mines[Line][Column];
}
public boolean checkLocation(){
do{
System.out.println("Enter the row number then the column number");
System.out.print("");
Line = input.nextInt();
System.out.print("");
Column = input.nextInt();
if( (boardgame[Line][Column] != '*') && ((Line < 11 && Line > 0) && (Column < 11 && Column > 0)))
System.out.println("Field already shown");
if( Line < 1 || Line > 10 || Column < 1 || Column > 10)
System.out.println("Choose a number between 1 and 10");
}while((Line < 1 || Line > 10 || Column < 1 || Column > 10) || (boardgame[Line][Column] != '.') );
if(getPosition(Line, Column)== -1)
return true;
else
return false;
}
public void show(){
for(int Line = 10 ; Line > 0 ; Line--){
System.out.print(" "+Line + " ");
for(int Column = 1 ; Column < 11 ; Column++){
System.out.print(" "+ boardgame[Line][Column]);
}
System.out.println();
}
System.out.println("\n 1 2 3 4 5 6 7 8 9 10 ");
}
public void fillTips(){
for(int line=1 ; line < 11 ; line++)
for(int column=1 ; column < 11 ; column++){
for(int i=-1 ; i<=1 ; i++)
for(int j=-1 ; j<=1 ; j++)
if(mines[line][column] != -1)
if(mines[line+i][column+j] == -1)
mines[line][column]++;
}
}
public void showMines(){
for(int i=1 ; i < 11; i++)
for(int j=1 ; j < 11 ; j++)
if(mines[i][j] == -1)
boardgame[i][j]='*';
show();
}
public void startBoard(){
for(int i=1 ; i<mines.length ; i++)
for(int j=1 ; j<mines.length ; j++)
boardgame[i][j]= '.';
}
public void startMines(){
for(int i=0 ; i<mines.length ; i++)
for(int j=0 ; j<mines.length ; j++)
mines[i][j]= 0;
}
public void randomFillGrid(){
boolean raffled;
int Line, Column;
for(int i=0 ; i<12 ; i++){
do{
Line = random.nextInt(10) + 1;
Column = random.nextInt(10) + 1;
if(mines[Line][Column] == -1)
raffled=true;
else
raffled = false;
}while(raffled);
mines[Line][Column] = -1;
}
}
}
}
This is what my board looks like. I want to change the zeros for blank so it looks similar to the second board example.
10 . . . . . . . . . .
9 . . . . . . . . . .
8 . . . . . . . . . .
7 . . . . . . . . . .
6 . . . . . . 2 1 . .
5 . . . . . . 1 1 1 .
4 . . . . . . 0 0 0 .
3 . . . . . . . . . .
2 1 . 2 . . . . . . .
1 1 1 1 . . . . . . .
1 2 3 4 5 6 7 8 9 10
**Second example:**
10 . . . . . . . . . .
9 . . . . . . . . . .
8 . . . . . . . . . .
7 . . . . . . . . . .
6 . . . . . . 2 1 . .
5 . . . . . . 1 1 1 .
4 . . . . . . . .
3 . . . . . . . . . .
2 1 . 2 . . . . . . .
1 1 1 1 . . . . . . .
1 2 3 4 5 6 7 8 9 10