Java Tiled map 正在横向绘制

标签 java arraylist java-2d

最近我一直在尝试制作一个小游戏来达到我的学习目的,但我陷入了困境。我能够从 .txt 文件生成 map ,但它似乎将其绘制为侧面?

这是我加载的 map ,它从文本文件中读取并将它们添加到 ArrayList 中。 宽度为 20,高度为 10。同样的情况也适用于我的 map ,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();
        }
    }

这是 map 的绘制方法

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

这是一个示例 map

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

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

最佳答案

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

每次你制作一个新的图 block 时,你都会切换 x 和 y,这会导致你的问题。

关于Java Tiled map 正在横向绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21359774/

相关文章:

java - 在 Java 中尝试从另一个类访问变量时获取 null

java - 基于数据库的报告有哪些脚本框架?

java - 完整内容未写入文件

java - 我如何正确对齐此文本?

用于创建图像的 Scala 库

java - 如何使用 ReSTLet 将 Json 结果反序列化为 POJO

java - 在小程序中序列化对象

java - drawPolygon 保持从起始(鼠标按下)位置到当前(鼠标拖动)位置的绘制线

c# - 将列表分配给通用列表

c# - 将两个列表元素合并为 json 对象