从受影响的画布位置上的二维数组中绘制一个位置

时间:2010-04-12 19:24:03

标签: java loops canvas multidimensional-array

背景

我有两个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));}

然而,我的知识有限,我对如何实施它感到困惑。

1 个答案:

答案 0 :(得分:0)

根本不要使用第二个数组。只需创建一个名为RectangleObject的名称,例如currentPosition或activeTile或personPosition。 但是,您并不需要将Point存储在RectangleObject中。为此使用2D RectangleObject数组(以便您可以使用索引来访问它们)并在RectangleObject中排除Point信息,

创建一个List的RectangleObjects并添加Point信息 - 但不要增加35,而是增加1.当你绘制图块时,你仍然可以(通过知道索引)找出哪里放置图块(例如indexX*tileWidthindexY*tileHeight)。

(你写的是什么世界和地图用来表示不太清楚。请解释一下,我可以给出更好的答案)