【问题标题】:Draw a position from a 2d Array on respected canvas location在受尊重的画布位置上从二维数组中绘制一个位置
【发布时间】:2010-04-12 19:24:03
【问题描述】:

背景:

我有两个二维数组。每个 2d 数组中的每个索引代表一个图块,该图块绘制在适合 8 x 8 块的方形画布上。

第一个二维数组表示地砖,并使用以下代码在画布上循环绘制:

                 //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 的绿色瓷砖网格。

第二个二维数组表示地面上的位置。这个二维数组的所有索引都为空,除了一个由 Person 类组成的索引。

问题

我不确定如何在网格上绘制位置。我在想一个类似的循环,所以它在之前的二维数组上绘制了另一组 64 个图块。只是这一次它们都是透明的,但只有一个不为空的图块。也就是说,Person 所在的 tile。

我想在整个循环中使用比较 if 语句来搜索

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

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

【问题讨论】:

    标签: java loops canvas multidimensional-array


    【解决方案1】:

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

    创建一个List 的 RectangleObjects 并添加点信息 - 但不要增加 35,而是增加 1。当您绘制瓷砖时,您仍然可以(通过知道索引)找出放置位置磁贴(例如indexX*tileWidthindexY*tileHeight)。

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

    【讨论】:

      猜你喜欢
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多