有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我怎样才能让我的每个tile对象都启动一个空的arraylist,以便以后添加内容?

我正在尝试用java实现一个棋盘游戏,目前正在开发这个棋盘游戏。游戏板上有37块六边形瓷砖。每一个都可以容纳建筑物、几种生物,以及一个显示其所有者的标记

我有37个每个磁贴的实例,现在我不确定如何让每个磁贴在每个磁贴上保存一个集合(数组、数组列表、链表等等)。当玩家在棋盘上移动这些生物时,我将从该棋盘上的阵列中取出东西,并将其添加到另一个棋盘上的另一个阵列中

我的第一反应是在我的Tile类的构造函数中放入几个数组列表,但我认为这是不可能的。有什么想法吗

这就是我到目前为止如何定义我的Tile类(如果好奇的话):

public class Tile {
    //neighbours of each tile
    public Tile n0;
    public Tile n1;
    public Tile n2;
    public Tile n3;
    public Tile n4;
    public Tile n5;

    public int owner = 0;

    public Tile (Terrain ter, int owned){
        owner = owned;
    }
}

编辑:

我想用我的构造函数做这样的事情:

public Tile (Terrain ter, int owned, ArrayList<Creature> creatureList){
        owner = owned; 
}

但我不确定这是否合法,或者这是否合理。这样做能让我将数组列表与我定义的每个磁贴实例相关联吗?还是有更好的方法?我不知道它是否需要在构造函数的参数中定义


共 (1) 个答案

  1. # 1 楼答案

    更好的方法是使用一个数组来容纳这样的每个平铺对象,因为您可以确定大小将根据您的电路板而固定

    Tile[] tiles = new Tiles[37];
    

    然后用空列表初始化每个平铺对象

    for(int i=0; i<tiles.length;i++)
    {
        tiles[i] = new ArrayList();
    }
    

    这样,你就不必在主类中创建37个对象,同时也可以灵活地为每个单独的平铺添加任意数量的项目

    经过重构的完整类如下所示:

    public class Tiles {
        //collection of tiles
        Tile[] tiles = new Tiles[37];
    
    
       // in the constructor initialize each individual tile with an arraylist
        public Tiles (){
    
            for(int i=0; i<tiles.length;i++)
            {
                tiles[i] = new ArrayList();
            }
        }
    }