【问题标题】:Other ways to build a 2D map in java [closed]在 java 中构建 2D 地图的其他方法 [关闭]
【发布时间】:2014-12-22 15:07:46
【问题描述】:

由于我是 Java 新手,所以我想编写一个简单的 2D 游戏,您可以在其中走动于由 16x16 图形组成的 2D 世界。我已经找到了一种创建纹理 JPanel 的方法:

public class TexturedPanel extends JPanel {
    private Image image;
    private boolean tile;

    TexturedPanel(Image image) {
        this.image = image;
        this.tile = true;
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(tile) {
            int iw = image.getWidth(this);
            int ih = image.getHeight(this);
            if (iw > 0 && ih > 0) {
                for(int x = 0; x < getWidth(); x += iw) {
                    for(int y = 0; y < getHeight(); y += ih) {
                        g.drawImage(image, x, y, iw, ih, this);
                    }
                }
            }
        } else {
            g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
        }
    }
}

现在我必须决定是继续使用这种方法还是应该使用另一种方法......

那么有没有更好(更快/更简单)的方法来构建带纹理的 JPanel?

提前致谢,马文

【问题讨论】:

    标签: java swing jpanel textures paintcomponent


    【解决方案1】:

    请注意,您发布的方法仅平铺单个图像。您可能想要平铺多个图像。

    一种方法是使用一个包含每个网格单元的图块类型的二维数组,然后使用该数组来决定在每个网格单元上绘制哪个图像。

    我建议从小一点开始——你能先根据二维数组绘制不同颜色的矩形吗?

    【讨论】:

    • 是的,这不会是一个问题(希望如此^^)我只是想知道这是一个好方法还是有更好的方法。我打算把它做成 2.5D,所以我需要透明图像相互重叠……用这种方法可以吗?
    • 在这种情况下,我不确定您所说的“更好”是什么意思。我强烈建议尝试一下。你的方法似乎很标准,所以我不会太担心。但是,是的,可以使用我们迄今为止提到的任何方法来使用透明图像。尝试一下,然后自己去发现——这就是让编程变得有趣的原因!
    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    相关资源
    最近更新 更多