-1

晚上好,

几个小时以来,我一直在寻找解决这个问题的方法,但没有成功,所以我想我会在这里问一个问题!我有一个关于从文本文件中读取字符/行的问题。我已经能够实现一个函数,它从文件中读取行。我正在使用 Greenfoot (Java) 创建一个使用 32x32 块的游戏。我想通过获取每个“块”/“字符”的 x/y 坐标并将其放置在世界中来从该文本文件中生成一个世界。使用数组会更容易吗?我当前的代码看起来像这样,但我不知道如何获取坐标。它可以通过使用它返回的哈希码来工作吗?

    public void readFile(String filename) throws IOException
{      
    String s;
    int x = 0;
    int y = 0;

    // Create BufferedReader and FileReader
    BufferedReader r = new BufferedReader(new FileReader(filename));

    // Try-catch block as exception handler 
    try {
        while((s = r.readLine()) != null) {

            // Create the blocks
            GrassBlock A = new GrassBlock();

            // Place them in the world
            addObject(A, x, y);

            // Test to see, if the blocks get recognised
            System.out.println(A);

            DirtBlock B = new DirtBlock();
            System.out.println(B);
            addObject(B, x, y);
        }            
    } catch (IOException e) {
        System.out.println("Fehler beim Öffnen der Datei");
    } finally {

    }
}

我的文件看起来有点像这样:

0000000000
0000000000
AAAAAA00AA
BBBBBB00BB

我看到我已经为 x 和 y 分配了值“0”,所以它当然不能像这样工作,但是我怎样才能得到那个位置呢?现在该函数能够读取行,在 (0, 0) 处生成块,并在控制台中显示带有哈希码的块。

PS对不起,如果我在某些事情上使用了错误的术语,我对编程还比较陌生!

谢谢你,朱利安

4

1 回答 1

0

只是很基础,没有过多修改问题代码,不完整

  1. 确定行号 y:

    int y = 0;
    while ((s = ...) != null) {
        // do something with s
        y += 1;  // or y++
    }
    
  2. 类似于行内的字符位置 x 并charAt用于检索字符:

    while ((s = ...) != null)  {
        int x = 0;
        while (x < s.length()) {
            char ch = s.charAt(x);
            // do something with ch, x, y - test for 0, A or B and add block
            x += 1;  // or x++
        }
        y += 1;  // or y++
    }
    

注意:x在外部(第一个)循环内声明,因为其他地方不需要它;x在内部循环之前设置为零,因为它是新行的开始;for可以使用循环代替-while使用计数器时更好(例如x

于 2017-05-12T11:40:32.410 回答