我有一个名为bt
的瓷砖对象,以及草砖,GT和花砖等其他瓷砖。这些都是对象。
然后我将这些对象的名称放入一个数组中,以创建一个呈现给屏幕的地图。像这样:
Tile[] map = new Map{bt, bt, bt, bt,
gt, gt, gt, gt,
bt, bt, ft, ft}
现在我的问题是,我是否引用了瓷砖对象的名称?意思是,实际上只有三个瓷砖,而不是概述的12个瓷砖?如果是这样,我怎么能绕过那个?我的目标是在每个不同的磁贴上制作1个,然后让数组重复它们,每次基本上实例化一个新的磁贴。
答案 0 :(得分:2)
我不打算编译我害怕。
但鉴于你的问题是
现在我的问题是,我是否引用了瓷砖对象的名称?意思是,实际上只有三个瓷砖,而不是概述的那个12?
当您创建类型为Tile
的数组时,您将声明一组指向Tile对象的指针,而不是Tile
个对象本身。这个想法是你自己经历并填充它们。当你创建一个Tile[]
对象时:
Tile[] tiles = new Tile[10];
你有一个看起来像这样的数组:
tiles[0] = null;
tiles[1] = null;
...
tiles[9] = null;
然后,你经历并填充它们。
tiles[2] = new Tile();
现在阵列看起来像:
tiles[0] = null;
tiles[1] = null;
tiles[2] = Tile[Some Hex Code here]
tiles[3] = null;
...
tiles[9] = null;
因此,要回答原始问题,如果您要通过并手动实例化 12 Tile
个对象,那么12
会有12
个指针数组中保存的不同Tile
个对象。
答案 1 :(得分:0)
你可以迭代你的瓷砖并为每个瓷砖制作一个新瓷砖......
Tile[] map = new Tile[] {bt, bt, bt, bt, gt, gt, gt, gt, bt, bt, ft, ft};
ArrayList<Tile> tiles = new ArrayList<Tile>();
for (Tile tile : map) {
tiles.add(new Tile(tile.text));
}
map = tiles.toArray(map);
答案 2 :(得分:0)
您可以创建一个抽象tile类并使用该抽象tile类创建数组, 然后应用一些循环并用子对象实例化对象即 你想要namly bt gt和ft
答案 3 :(得分:-1)
我认为您正在寻找的解决方案是
Tile[] map = new Tile[12]();//declare a tile array that can hold 12 Tile Reference
//Assign those 12 references to the Objects
for(int i=0;i<4;i++)
{
map[i]=bt;
}
for(int i=4;i<8;i++)
{
map[i]=gt;
}
for(int i=8;i<10;i++)
{
map[i]=bt;
}
for(int i=10;i<12;i++)
{
map[i]=ft;
}