当前位置: 首页 > 知识库问答 >
问题:

我如何让我的每个磁贴对象启动一个空的数组列表,我可以在以后添加东西?

暨曾笑
2023-03-14

我试图在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个答案

仲孙景胜
2023-03-14

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

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();
        }
    }
}
 类似资料:
  • 问题内容: 我可以从数组中读取每种语法的数据: 但是有可能同样填充数组。说,有价值观? 我没有发明这样的方法,而是想问你我是否错。 问题答案: 在Java Docs中 , for-each循环隐藏了迭代器,因此您无法调用remove。因此,for-each 覆盖绝大多数案例。 因此,简单来说,不可能填充数组。

  • 问题内容: 是否可以添加我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说: ALTER TABLE仅允许添加可以包含空值或指定DEFAULT定义的列,或者要添加的列是Identity或timestamp列,或者如果不满足任何先前条件,则该表必须为空才能允许添加本专栏的内容。无法将列“ test”添加到非空表“ shiplist”中,因为它不满足这些条件。 如果

  • 问题内容: 我使用python创建原型,并且为此使用了zip函数,但不确定如何在Java中执行此操作。基本上,我有两个列表(一个是名称,一个是数据),希望它们相对于彼此排序。我的程序仅处理列表(在这种情况下为数据),但是我将名称用作对正在处理的数据的引用,并且我想尝试以不同的顺序处理数据。这是结构的一个示例(实际上我的数据没有提供给我存储,但是我会对其进行基本排序或反向排序,没什么花哨的)。 所以

  • 很抱歉这太模糊了,但代码太多了。 这是一个五卡梭哈游戏。基本上,我试图将对象添加到另一个数组列表中的数组列表中。 这是我创建玩家数组并将手类中的数组添加到其中的地方,至少我认为这就是正在发生的事情: 稍后,我尝试在循环交易中将牌添加到玩家阵列中的手牌阵列中。由于有五张牌,第一个循环进行了五次。第二个是玩家数组的长度(玩家总数),每次应该添加一张卡。 Deck类中有一个deal方法,由以下方法初始化

  • 我有一个活动选项卡的自动播放选项卡类current,这意味着当选项卡是活动的时,列表项有一个名为current的类。 现在我要向第一个子 添加不同的类 null null

  • 如果一个表达式包含任何整数大小或更小的内容,其结果总是整数,即使两个字节之和适合一个字节。 为什么我们在一个字节中添加最后两个字节时会发生这种情况?没有编译器错误。