问题是,我正在用 Java 开发一个基于文本的角色扮演游戏。我的游戏总是按顺序运行,因此如果我要更新最新的故事线程,我必须从头开始并运行整个游戏,直到到达我想要检查的点。 我的问题是:是否可以创建一个“savePoint”或一些调试选项来立即到达我需要的点?
我什至没有尝试任何东西,因为我不知道如何实现它..:(
我的 GameLoop 的小片段:
public class GameLoop { // todo -> modularizar esta clase en un futuro para manejabilidad y comprensión
public static void run(GameContext gc, PlayerInteractions pi) {
Npc npc = new Npc();
gc.getConsolePresentation().displayStats(gc.getGuiInteraction(),gc.getPlayer(),null);
String playerName = "";
do {
gc.getPlayer().setName(gc.getGuiInteraction());
playerName = gc.getGuiInteraction().getInput();
} while (playerName == null || playerName.trim().isEmpty());
gc.getGuiInteraction().continueGame();
gc.getPlayer().setName(playerName);
gc.getGuiInteraction().showMessage(gc.getPlayer().getName());
//inicio del juego
GameStoryTeller.narrar(0, null);
gc.getGuiInteraction().pauseForUserInput();
GameStoryTeller.narrar(1, gc.getPlayer());
gc.getGuiInteraction().pauseForUserInput();
GameStoryTeller.narrar(47,null);
GameVoiceOver.dialogo(19,null);
gc.getGuiInteraction().pauseForUserInput(); GameVoiceOver.separador(gc.getGuiInteraction());
//estadísticas iniciales del jugador
GameStoryTeller.narrar(2, null);
gc.getGuiInteraction().pauseForUserInput();
GameStoryTeller.narrar(3, gc.getPlayer());
gc.getGuiInteraction().pauseForUserInput();
//interacción inicial con NPC
Npc.interactuarNPC00(gc.getGuiInteraction());
gc.getGuiInteraction().pauseForUserInput();
String respuesta = pi.opcionEscogida0(gc.getGuiInteraction(), gc.getPlayer());
npc.interactuarNPC01(respuesta);
gc.getGuiInteraction().pauseForUserInput();
Npc.interactuarNPC02(gc.getPlayer());
您可以创建保存到文件并从文件重新加载的方法。 如果它适合您,您可以使用保存到文本文件:
public static void Save(){
try(BufferedWriter writer = new BufferedWriter(new FileWriter("name_of_file.txt"))) {
writer.write("code you want to save;");
writer.write("next code");
writer.newLine();
writer.write("code on new line;");
//your code for saving to text file
}catch (IOException e){
System.err.println("error message");
}
}
阅读代码:
public static void Load() {
try (BufferedReader reader = new BufferedReader(new FileReader("name_of_file.txt"))) {
String text = reader.readLine();
while (text != null) {
String[] data = text.split(";");
String firsPart = data[0];
//your code to implement loading progress
}
}catch (IOException e){
System.err.println("error message");
}
}
或者,如果您将进度存储为对象,则可以使用 ObjectsOutputStream/ObjectInputStream