这里我有一个正在进行的文件读取实用程序,我试图用来从文件中加载不同的子弹射击配置(游戏内对象)配置。
package game.entity.bullet;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.lwjgl.util.vector.Vector2f;
public class ConfigReader {
public static List<BulletConfiguration> configurations = new ArrayList<BulletConfiguration>();
public void loadConfigs(String input) throws IOException {
File file = new File(input);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
if (line.startsWith("START:")) {
BulletConfiguration b = new BulletConfiguration();
String name = line.split(": ")[1];
b.name = name;
while (!line.startsWith("END:")) {
line = reader.readLine();
String bt = line.split(" ")[1].toLowerCase();
Vector2f bulletPos = new Vector2f(
Float.parseFloat(line.split(" ")[2].split(":")[0]),
Float.parseFloat(line.split(" ")[2].split(":")[1]));
Vector2f bulletVelocity = new Vector2f(
Float.parseFloat(line.split(" ")[3].split(":")[0]),
Float.parseFloat(line.split(" ")[3].split(":")[1]));
b.bullets.add(BulletType.valueOf(bt));
b.bullet_spawn_positions.add(bulletPos);
b.bullet_velocities.add(bulletVelocity);
}
configurations.add(b);
}
}
}
}
以下是一些示例配置:
BEGIN: Cannon
p Standard 0:0 0:1
END:
BEGIN: Triple Cannon
p Small 0:0 -0.25:1
p Small 0:0 0:1
p Small 0:0 0.25:1
END:
这就是我必须帮助解释我想要做的事情。它应该检查何时声明“BEGIN:”,然后检查它是否达到“END:”语句,并将值解析为它们各自的值。
另外,请给我一些关于我的问题的反馈;这是我的第一个,所以我不确定这是否完全可以接受。
答案 0 :(得分:1)
按以下方式更改while循环:
line = reader.readLine();
while (!line.startsWith("END:")) {
String bt = line.split(" ")[1].toLowerCase();
Vector2f bulletPos = new Vector2f(
Float.parseFloat(line.split(" ")[2].split(":")[0]),
Float.parseFloat(line.split(" ")[2].split(":")[1]));
Vector2f bulletVelocity = new Vector2f(
Float.parseFloat(line.split(" ")[3].split(":")[0]),
Float.parseFloat(line.split(" ")[3].split(":")[1]));
b.bullets.add(BulletType.valueOf(bt));
b.bullet_spawn_positions.add(bulletPos);
b.bullet_velocities.add(bulletVelocity);
line = reader.readLine();
}
正如@MadProgrammer所指出的那样改变
if (line.startsWith("START:"))
到
if (line.startsWith("BEGIN:"))