Как увеличить окружающие ячейки ячейки в двумерном массиве? - PullRequest
0 голосов
/ 19 февраля 2020

В настоящее время я создаю простую игру 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]++;
        }
    }
}
}

Любая помощь будет принята с благодарностью:)

...