Java Tiled地图侧面绘画

时间:2014-01-26 04:39:36

标签: java arraylist java-2d

最近我一直试图为我的学习目的制作一个小游戏但是我被卡住了。我能够从.txt文件生成一个地图但是它似乎在侧面绘制它?

这是我加载的地图,它从文本文件中读取并将它们添加到ArrayList中。 宽度为20高度为10.同样的事情适用于我的地图20行宽10下。

public void loadMap(String name) {
        try {
            this.name = name;

            FileInputStream file_stream = new FileInputStream(name);
            DataInputStream in = new DataInputStream(file_stream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));

            map = new Tile[WIDTH][HEIGHT];

            String line;
            int y = 0;
            while ((line = br.readLine()) != null) {
                String[] tokens = line.split(" ");
                for (int x = 0; x < WIDTH; x++) {
                    boolean f = false;
                    if (Integer.parseInt(tokens[x]) == 1)
                        f = true;
                    Tile tile = new Tile(y, x, f, Integer.parseInt(tokens[x]));
                    tiles.add(tile);
                    map[x][y] = tile;
                    System.out.println("adding tile (x: " + x + " y: " + y + ") " + f + " " + Integer.parseInt(tokens[x]));
                }
                y++;
            }
            in.close();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "The map: " + name + " was not found.");
            e.printStackTrace();
        }
    }

这是地图的绘制方法

public void paint(Graphics2D g) {
        for (Tile t : getTiles()) {
            t.draw(g);
        //g.draw(t.getBounds());
        }
    }

这是一个示例地图

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

它绘制地图的方式基本上是这个的垂直版本,而不是像上面那样正确的方式。我已经尝试弄乱mapLoaded(宽度,高度)中的数字并切换x和y,但似乎没有任何效果。请帮忙

1 个答案:

答案 0 :(得分:1)

您只需将Tile tile = new Tile(y, x, f, Integer.parseInt(tokens[x]));更改为 Tile tile = new Tile(x, y, f, Integer.parseInt(tokens[x]));

每当你制作一个新的瓷砖时,你都会切换x和y,这会导致你的问题。