В настоящее время я создаю простую игру Minesweeper и хочу написать метод с параметрами координат строк и столбцов, который устанавливает тайлы, которые будут добываться, и использует циклы for для увеличения соседних мин соседних тайлов. Метод должен возвращать true, если квадрат был успешно добыт, и false, если максимальное количество мин было превышено, или квадрат уже был добыт.
Но я понятия не имею, как я могу начать писать это Метод, я уже создал 2-мерный массив, и попытался увеличить соседние мины, но мои логики c не все там lol.
Методы, которые могут вас заинтересовать, это Display () и mineCount ()
Вот мой код:
Класс минного поля:
import java.util.Random;
public class Minefield {
boolean[][] minefield;
int[][] minedNeighbour;
Random r = new Random();//random number generator
int row;
int column;
int mines;
public int emptySpaces = column*row;
public void Minefield(int row, int column, int mines) {
this.row = row;
this.column = column;
this.mines = mines;
minedNeighbour = new int[row][column];
for(int i = 0;i < 5;i++)
{
for(int j = 0;j < 5;j++)
{
minedNeighbour[i][j] = -1;
}
}
for(int i = 0;i < 5;i++)
{
int x,y;
do{
x = r.nextInt(5);
y = r.nextInt(5);
}
while(minedNeighbour[x][y] == 99);
minedNeighbour[x][y] = 99;
}
}
public void display()
{
System.out.println(". 0 1 2 3 4");
for(int i = 0;i < 5; i++)
{
System.out.print(i);
for(int j = 0;j < 5;j++)
{
if(minedNeighbour[i][j] > -1 && minedNeighbour[i][j] < 9)
System.out.println(" "+minedNeighbour[i][j]);
else System.out.println(" +");
}
System.out.println();
}
}
public void mineCount(int x, int y)
{
int i,j; //loop variables
if(minedNeighbour[x][y]!= -1)return; //already used
minedNeighbour[x][y] = 0;//used
emptySpaces--;
for (i = x-1 ;i<=x+1 ; i++)
{
for(j = y-1 ;j<=y+1 ; j++)
{
if(minedNeighbour[i][j] == 99)
{
minedNeighbour[x][y]++;
}
}
}
if(i >= 0 && j >= 0 && i < 5 && j < 5)
{
if(minedNeighbour[i][j] == 99)
{
minedNeighbour[x][y]++;
}
}
}
}
Любая помощь будет принята с благодарностью:)