我如何编号一个2D 10x10 Game Board对象?



我正在用Java创建一个蛇与天梯游戏。我正在想办法给我创造的板子编号,这样我就可以标记出蛇和梯子在板子上的位置。

板应该是10X10。

下面是我的Board.java类,代码如下:
public class Board {
private boolean snake;
private boolean ladder;
private int number;

Board(){
snake = false;
ladder = false;
number = 0;
}

public static void fillBoard(Board[][] a) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++)
// a[i][j] = add some way to increment a number here 
}
}

这是我的Play.java类,其中创建了board对象。


import java.util.*;
public class Play{
//create object of the board class
public static int numRows = 10; // number of rows 
public static int numCols = 10; // number of columns  
public static Board[][] board = new Board[numCols][numRows];
public static void main(String[] args) {
System.out.println(Board.fillBoard(Board[][]));
}
}

我只是在寻找一些关于如何用从1-100增加的数字填充董事会的指导。我试图创建fillBoard()方法,但我不确定如何完成它,或者如果它是一个很好的方法来接近这个。

您可以在这里使用计数器变量。在内循环中为数组元素赋值计数器,然后在每次赋值后增加计数器。

当前2D数组的类型是board,要使用下面的解决方案,您必须将类型切换为int。

public static void fillBoard(Board[][] a) {
int counter = 1;
for (int i = 0; i <= a.length; i++) {
for (int j = 0; j < a[i].length; j++)
a[i][j] = counter;
counter ++;
}
}

你的fillBoard方法也有返回类型void,这意味着它不返回任何东西。这意味着不能工作。

System.out.println(Board.fillBoard(Board[][]));

你可以导入数组,然后你可以使用它的方法Arrays.deepToString(),它允许你打印嵌套数组。在这里你可以找到更多

  • https://www.geeksforgeeks.org/arrays-deeptostring-in-java-with-example/

下面这行代码来自您的类Play

public static Board[][] board = new Board[numCols][numRows];

这将创建一个数组,其中数组中的每个元素都为空。这是你传递给Board类中的fillBoard方法的数组。因此,在方法fillBoard中,需要首先创建一个Board对象,并将其作为元素添加到数组中。之后,可以给成员变量number赋值。

我假设你想要连续的数字,因为每个Board实例代表棋盘上的一个正方形,而在蛇梯游戏中,正方形从1(开始的正方形)到100连续编号。因此,决定给number赋哪个值的计算是…

行索引乘以行长度加上列索引加上1

这是因为行索引列索引都从0开始(根据您的问题中的代码),并且因为您希望值的范围从1到100(而不是从0到99)

这是填充您的板的代码。

public class Board {
private boolean snake;
private boolean ladder;
private int number;
Board() {
snake = false;
ladder = false;
number = 0;
}
public static void fillBoard(Board[][] a) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = new Board();
a[i][j].number = i * a[i].length + j + 1;
}
}
}
}

注意,上面的代码只是回答你的问题。我敢肯定,随着你在游戏开发过程中的进步,你会遇到更多问题,这将促使你发布更多问题。在这种情况下,应该发布新的和单独的问题-不要在评论中添加更多的问题。

最新更新