我试图在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;
}
但我不确定这是否合法,或者这是否合理。这样做能让我将数组列表与我定义的每个磁贴实例相关联吗?还是有更好的办法?我不知道它是否需要在构造函数的参数中定义。
更好的方法是使用一个数组来容纳这样的每个平铺对象,因为您可以确定大小将根据您的电路板而固定。
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
如果一个表达式包含任何整数大小或更小的内容,其结果总是整数,即使两个字节之和适合一个字节。 为什么我们在一个字节中添加最后两个字节时会发生这种情况?没有编译器错误。