java - 如何增加二维数组中单元格的周围单元格?
问题描述
我目前正在创建一个简单的扫雷游戏,我想编写一个带有行和列坐标参数的方法,用于设置要开采的瓷砖,并使用 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]++;
}
}
}
}
任何帮助都将不胜感激:)
解决方案
推荐阅读
- javascript - javascript返回嵌套对象数组并排列相似类型
- html - 使用css显示两个相邻的div,中间有空格
- javascript - 如何设置发送与 Google 表单上的调查问卷相关联的自动提醒电子邮件?
- android - 模糊 TextView 中的特定单词
- javascript - jquery 数据表,添加额外的分页号以通过 ajax 加载下一组数据
- flutter - google_maps_flutter 和 AndroidX 迁移
- html - 如何在列中具有相等大小的图像的等高列
- bash - Git - 如果没有任何匹配项,我如何将配置添加到“选项卡”以获取正确的分支或分支?
- java - 使用 javafx 播放音效/音乐的最佳选择是什么?
- vue.js - 如果搜索值为空Vuetify,如何在组合框中隐藏菜单?