我正在创建一个在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()方法,但我不确定如何完成它,或者它是否是实现此目的的好方法。
发布于 2021-02-04 00:36:16
您可以在此处使用计数器变量。在内部循环中将计数器赋给数组元素,然后在每次赋值后递增计数器。
目前您的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方法具有as返回类型void,这意味着它不返回任何内容。这意味着这将不起作用。
System.out.println(Board.fillBoard(Board[][]));您可以导入数组,然后可以使用其方法Arrays.deepToString(),该方法允许您打印嵌套数组。您将在这里找到更多信息。
发布于 2021-02-04 16:07:37
下面这行代码来自您的类Play
public static Board[][] board = new Board[numCols][numRows];这将创建一个数组,其中数组中的每个元素都为空。这是您在Board类中传递给fillBoard方法的数组。因此,在fillBoard方法中,您需要首先创建一个Board对象,并将其作为元素添加到数组中。之后,您可以为成员变量number赋值。
我假设您想要连续的数字,因为每个Board实例代表棋盘上的一个方块,而在Snake and Ladders游戏中,方块的编号是从1(开始方块)到100。因此,确定将哪个值赋给number的计算是...
行索引乘以行长度+列索引+1
这是因为行索引和列索引都从零开始(根据问题中的代码),也因为您希望值的范围从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;
}
}
}
}请注意,上面的代码只是回答了您的问题。我敢肯定,随着你在游戏开发中的进步,你会遇到更多的问题,这会促使你发布更多的问题。在这种情况下,你的应该发布新的和单独的问题-而不是在这个答案的评论中添加更多的问题。
https://stackoverflow.com/questions/66031720
复制相似问题