首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对2D 10x10游戏板对象进行编号?

如何对2D 10x10游戏板对象进行编号?
EN

Stack Overflow用户
提问于 2021-02-04 00:32:14
回答 2查看 91关注 0票数 0

我正在创建一个在Java的蛇和梯子游戏。我正在试着找出一种方法来编号我创建的棋盘,这样我就可以在棋盘上以某种方式标记蛇和梯子的位置。

棋盘应该是10X10的。

下面是我的Board.java类,其中包含以下代码:

代码语言:javascript
复制
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对象。

代码语言:javascript
复制
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()方法,但我不确定如何完成它,或者它是否是实现此目的的好方法。

EN

回答 2

Stack Overflow用户

发布于 2021-02-04 00:36:16

您可以在此处使用计数器变量。在内部循环中将计数器赋给数组元素,然后在每次赋值后递增计数器。

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

代码语言:javascript
复制
 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,这意味着它不返回任何内容。这意味着这将不起作用。

代码语言:javascript
复制
    System.out.println(Board.fillBoard(Board[][]));

您可以导入数组,然后可以使用其方法Arrays.deepToString(),该方法允许您打印嵌套数组。您将在这里找到更多信息。

票数 1
EN

Stack Overflow用户

发布于 2021-02-04 16:07:37

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

代码语言:javascript
复制
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)。

这是填充你的板子的代码。

代码语言:javascript
复制
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;
            }
        }
    }
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66031720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档