2010-04-12 84 views
0

背景:绘制从2D阵列上尊重画布位置的位置

我有两个2D阵列。每个2d数组中的每个索引都表示一个在方形画布上绘制的图块,适用于8 x 8的图块。

第一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×8跨越如预期产生绿色瓦片的网格。

第二个二维数组表示在地面上的位置。这个2d数组的每个索引都与Person类中的所有索引都是空的。

问题

我不确定我怎么能得出对电网的位置。我正在考虑一个类似的循环,因此它将先前的2d阵列画出另一组64个图块。只有这一次,它们都是透明的,但不是空的那一块。换句话说,Person所在的区块。

我想如果用的是对比使用整个环搜索沿

if(!(world[] == null)){ 
map.add(new RectangleObject(p,35,35,Colour.red));} 

行语句但是我的知识是有限的,我是如何实现它混淆。

回答

0

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

创建RectangleObjects的List并添加点信息 - 但不要增加35,而要增加1.当你画瓷砖时,你仍然可以(通过了解指数)找出把瓷砖放在哪里(例如indexX*tileWidth,indexY*tileHeight)。

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