Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为2D 10x10游戏板对象编号?_Java - Fatal编程技术网

Java 如何为2D 10x10游戏板对象编号?

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

我正在用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 
        }
    }

我只是想寻求一些指导,告诉我如何用从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]定义板的二维阵列。您可以通过快速修复将类型更改为int
      public 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[][]));