首页 > 解决方案 > 如何增加二维数组中单元格的周围单元格?

问题描述

我目前正在创建一个简单的扫雷游戏,我想编写一个带有行和列坐标参数的方法,用于设置要开采的瓷砖,并使用 for 循环来增加周围瓷砖的相邻地雷。如果方格被成功开采,该方法应该返回 true,如果超过最大地雷数,或者方格已经被开采,则返回 false。

但我不知道如何开始编写这个方法,我已经创建了二维数组,并试图让相邻的地雷增加,但我的逻辑并不全部,哈哈。

您可能感兴趣的方法是 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]++;
        }
    }
}
}

任何帮助都将不胜感激:)

标签: javalogicminesweeper

解决方案


推荐阅读