Java: получение координат символа, считывание из файла

Добрый вечер,

В течение нескольких часов я безуспешно искал решение этой проблемы, поэтому решил, что задам вопрос здесь! У меня есть вопрос относительно чтения символов / строк из текстового файла. Я был в состоянии реализовать функцию, которая читает строки из файла. Я использую 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

Я вижу, что я назначил значение "0" для x и y, поэтому, конечно, это не может работать так, но как я могу получить эту позицию? Прямо сейчас функция может читать строки, генерировать блоки в (0, 0) и показывать блоки в консоли с хеш-кодом.

PS Извините, если я использовал неправильный термин для некоторых вещей, я относительно новичок в программировании!

Спасибо джулиан

1 ответ

Просто самый базовый, без слишком большого изменения кода вопроса, не полный

  1. определение номера строки y:

    int y = 0;
    while ((s = ...) != null) {
        // do something with s
        y += 1;  // or y++
    }
    
  2. аналогично для позиции символа х внутри строки и использования 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)

Другие вопросы по тегам