Java 如何为2D 10x10游戏板对象编号?
我正在用Java创建一个蛇和梯子游戏。我正试图找出一种方法来编号我创建的板,这样我就可以标记蛇和梯子在板上的位置 电路板应为10X10 下面是我的Board.java类,代码如下:Java 如何为2D 10x10游戏板对象编号?,java,Java,我正在用Java创建一个蛇和梯子游戏。我正试图找出一种方法来编号我创建的板,这样我就可以标记蛇和梯子在板上的位置 电路板应为10X10 下面是我的Board.java类,代码如下: public class Board { private boolean snake; private boolean ladder; private int number; Board(){ snake = false; ladder = f
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
}
}
我只是想寻求一些指导,告诉我如何用从1到100的递增数字填充黑板。我试图创建fillBoard()方法,但我不确定如何完成它,或者这是否是一个好方法。您可以在此处使用计数器变量。在innerloop中将计数器分配给数组元素,然后在每次分配后递增计数器 当前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 ++;
}
}
您可以导入数组,然后使用其方法Arrays.deepToString()
,该方法允许您打印嵌套数组。
在这里你会发现更多
- 以下代码行来自您的班级
Play
publicstaticboard[]Board=新板[numCols][numRows];
这将创建一个数组,其中数组中的每个元素都为null。这是在类Board
中传递给方法fillBoard
的数组。因此,在方法fillBoard
中,您需要首先创建Board
对象,并将其作为元素添加到数组中。之后,您可以为成员变量number
赋值
我假设您想要连续的数字,因为每个棋盘
实例代表棋盘上的一个正方形,在蛇和梯子游戏中,正方形从1(起始正方形)到100连续编号。因此,用于确定分配给编号的值的计算是
行索引乘以行长度加上列索引加上一
这是因为行索引和列索引都从零开始(根据您问题中的代码),并且您希望值的范围为1到100(而不是0到99)
这是填充您的板的代码
公共课程委员会{
私有布尔蛇;
私有布尔阶梯;
私有整数;
董事会(){
蛇=假;
梯形图=假;
数字=0;
}
公共静态空白填充板(板[][]a){
for(int i=0;i
请注意,上面的代码只回答了您的问题。我相信,随着你在游戏开发过程中的进步,你会遇到更多的问题,这将促使你发布更多的问题。在这种情况下,您应该发布新的和单独的问题,并且不要在此答案的注释中添加更多的问题。我遇到了以下错误:类型不匹配:无法从int转换为Board。建议我将int计数器更改为Board计数器。此错误出现在我的Board.java类中,因为您
公共静态板[][]Board=新板[numCols][numRows]代码>定义板的二维阵列。您可以通过快速修复将类型更改为intpublic static int[][]board=new int[numCols][numRows]
更好的解决方案是在板中创建一个函数创建板,在其中填充值,然后返回2D数组。但作为快速修复,只需将类型更改为int即可。非常感谢您的帮助!我只是得到了另一个错误做它的“快速”的方式。所以我的错误是:类型板的fillBoard(Class)方法未定义。我将数组更改为:publicstaticint[]board=newint[numCols][numRows];以及System.out.println(Board.fillBoard(int[]);我对以下内容进行了更改,以及对公共静态void fillBoard(int[][]a){int counter=1;for(int I=0;I 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 ++;
}
}
System.out.println(Board.fillBoard(Board[][]));