Java 扫雷舰游戏阵列
我和问这个问题的人有同样的问题 我想为一个小型扫雷游戏编写一些基本的代码。 现在我有一个问题,我的代码Java 扫雷舰游戏阵列,java,Java,我和问这个问题的人有同样的问题 我想为一个小型扫雷游戏编写一些基本的代码。 现在我有一个问题,我的代码 public class Minesweeper1 { public static int[][] makeRandomBoard(int s, int z, int n){ int feld[][] = new int [s][z]; for(int i = 0; i < s; i++){ for(int j = 0; j <
public class Minesweeper1 {
public static int[][] makeRandomBoard(int s, int z, int n){
int feld[][] = new int [s][z];
for(int i = 0; i < s; i++){
for(int j = 0; j < z; j++){
feld[i][j] = 0;
}
}
for(int i = 0; i < n; i++){
selectRandomPosition(s, z);
feld[randomHeight][randomWidth] = 1;
}
}
这里我不允许更改任何内容,但它返回一个新数组。现在我的问题是如何在makeRandomBoard
中使用新数组,因为我不知道数组的任何名称。当我使用feld[randomHeight][randomWidth]=1时代码>它说它不知道这些变量
他确实得到了答案:
调用该方法,并将其返回值赋给变量。现在您有了阵列的名称:
// Make a call
int[] randomArray = selectRandomPosition(maxW, maxH);
// Access the width
int randomW = randomArray[0];
// Access the height
int randomH = randomArray[1];
但是我现在要写什么呢?
我试了一下:
feld[randomW][randomH] = 1;
但它似乎不起作用。我还需要一个返回语句。
有人能帮我吗?我相信这就是您正在寻找的解决方案:
解决方案
公共级扫雷艇1{
//注:
//s==高度
//z==宽度
公共静态int[]makeRandomBoard(int s、int z、int n){
//注意:“字段”拼写错误?
int feld[][]=新的int[s][z];
//初始化没有地雷的游戏板(值为0)
对于(int i=0;i
问题
传递错误的值
您呼叫的selectRandomPosition
错误。请记住,s
是高度,z
是宽度。因此,您要将第一个参数的高度和第二个参数的宽度传递到selectRandomPosition
。请看方法声明:
public static int[]选择随机位置(int-maxWidth,int-maxHeight)
这意味着您将高度传递到maxWidth
,将宽度传递到maxHeight
。我的解决方案可以帮你实现。这可能是混淆的,因为<代码> s < /> >和<代码> z <代码>没有真正给你提示它们是什么(高度和宽度)-考虑重命名这些变量来帮助你。
以错误的顺序访问
你的问题中有:
feld[randomW][randomH]=1;
这是错误的,应该是:
feld[randomH][randomW]=1;
此图显示了二维阵列外观的视觉表示:
因此,访问将是:
feld[0][0]==1
费尔德[0][1]==1
费尔德[0][2]==1
费尔德[1][0]==1
费尔德[1][1]==2
费尔德[1][2]==4
费尔德[2][0]==1
费尔德[2][1]==3
费尔德[2][2]==9
挑剔:拼写错误
除了像s
和z
这样的奇怪变量名根本不能帮助您记住什么意思之外,您最终返回的主变量拼写错误。你是说“田野”吗
变量命名很重要,可以帮助您和其他读者轻松理解代码。此外,在你认为需要的地方发表评论也会有帮助 那是个糟糕的标题。请使用标题总结手头的问题。这与C有什么关系?您有2个随机数,需要如何处理它们?feld[randomH][randomW]=1
但是请注意,您已经颠倒了赋值,它应该是intrandomW=randomArray[1]
和intrandomH=randomArray[0]
最后,在结束括号之前的makeRandomBoard
的最后一行应该返回feld这是一个非常奇怪的问题
feld[randomW][randomH] = 1;