背景
我有两个2d数组。每个2d数组中的每个索引代表一个在适合8 x 8个tile的方形画布上绘制的图块。
第一个2d数组代表地面图块,并使用以下代码在画布上循环和绘制:
//Draw the map from the land 2d array
map = new Canvas(mainFrame, 20, 260, 281, 281);
for(int i=0; i < world.length; i++){
for(int j=0; j < world[i].length; j++){
for(int x=0; x < 280; x=x+35){
for(int y=0; y < 280; y=y+35){
Point p = new Point(x,y);
map.add(new RectangleObject(p,35,35,Colour.green));
}
}
}
}
这会按预期创建一个8 x 8绿色网格网格。
第二个2d数组代表地面上的位置。这个2d数组的每个索引都是null,除了一个由Person类组成的索引。
问题
我不确定如何在网格上绘制位置。我在想一个类似的循环,所以它在前面的2d数组上绘制另一组64个tile。只有这次它们都是透明的,但是一个非空的瓦片。换句话说,Person所在的区块。
我希望在整个循环中使用沿着
的比较if语句进行搜索if(!(world[] == null)){
map.add(new RectangleObject(p,35,35,Colour.red));}
然而,我的知识有限,我对如何实施它感到困惑。
答案 0 :(得分:0)
根本不要使用第二个数组。只需创建一个名为RectangleObject
的名称,例如currentPosition或activeTile或personPosition。
但是,您并不需要将Point存储在RectangleObject中。为此使用2D RectangleObject数组(以便您可以使用索引来访问它们)并在RectangleObject中排除Point信息,
或
创建一个List
的RectangleObjects并添加Point信息 - 但不要增加35,而是增加1.当你绘制图块时,你仍然可以(通过知道索引)找出哪里放置图块(例如indexX*tileWidth
,indexY*tileHeight
)。
(你写的是什么世界和地图用来表示不太清楚。请解释一下,我可以给出更好的答案)