Итак, у меня есть 2 типа файлов, один для определения уровня, а другой для определения структуры блоков.
Мне нужно проанализировать их оба в список строк, который содержит строки, и go сверх список и по каждой строке разделите, проанализируйте и сопоставьте их с объектами java.
У меня нет подсказки, как это сделать, я читал о java io reader, но я запутался здесь, где и как его использовать.
Понимание содержания спецификации уровня отдельного уровня: это будет go по строкам, разделить и проанализировать их и сопоставить их с java объектами, в результате Объект LevelInformation.
PS Я уже написал и построил интерфейс LevelInformation (который работает, если я вручную напишу уровень, реализующий этот интерфейс), который содержит все, что есть в текстовом файле (имя уровня, скорости, фон и др. c ..) Так что в основном мне просто нужно проанализировать эти текстовые файлы и сопоставить их с этим интерфейсом.
public interface LevelInformation {
int numberOfBalls();
// The initial velocity of each ball
// Note that initialBallVelocities().size() == numberOfBalls()
// velocities created by (a,s) format. a = angle, s = speed.
List<Velocity> initialBallVelocities();
int paddleSpeed();
int paddleWidth();
// the level name will be displayed at the top of the screen.
String levelName();
// Returns a sprite with the background of the level
Sprite getBackground();
// The Blocks that make up this level, each block contains
// its size, color and location.
List<Block> blocks();
// Number of blocks that should be removed
// before the level is considered to be "cleared".
// This number should be <= blocks.size();
int numberOfBlocksToRemove();
}
Пример файлов:
level_definition.txt
START_LEVEL
level_name:Square Moon
ball_velocities:45,500
background:image(background_images/night.jpg)
paddle_speed:650
paddle_width:160
block_definitions:definitions/moon_block_definitions.txt
blocks_start_x:25
blocks_start_y:80
row_height:100
num_blocks:4
START_BLOCKS
--ll--
--ll--
END_BLOCKS
END_LEVEL
block_definitions.txt
#block definitions
bdef symbol:l width:100 height:100 fill:color(RGB(154,157,84))
#spacers definitions
sdef symbol:- width:30
Итак Мне нужно создать список, получить читателя и как-то его разобрать. Буду рад получить несколько советов, идей и помощь в этом. Спасибо.
public class LevelSpecificationReader {
public List<LevelInformation> fromReader(java.io.Reader reader) {
// ...
}
}
Думаю, мне нужно:
Разделить файл на строки и составить из них список строк. Это означает, что каждая строка попадет в список в виде строки.
Получите каждую строку, а также разделите ее на не знаю на что, но для получения информации и карты в в нужный объект. Например:
level_name: что-то, что мне нужно будет добавить «что-то» в «имя уровня» в моем интерфейсе.
Это моя неудачная попытка:
public List<LevelInformation> fromReader(java.io.Reader reader) throws IOException {
ArrayList<String> listOfLines = new ArrayList<>();
BufferedReader bufReader = new BufferedReader(new FileReader("file.txt"));
String line = bufReader.readLine();
while (line != null) {
listOfLines.add(line);
line = bufReader.readLine();
}
return listOfLines;
}
Этот код вызывает ошибку, потому что я возвращаю список строк, но мне нужен список LevelInformation.