如何在Java中的文字RPG游戏中设置自定义起点?

问题描述 投票:0回答:1

问题是,我正在用 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());
java game-development
1个回答
0
投票

您可以创建保存到文件并从文件重新加载的方法。 如果它适合您,您可以使用保存到文本文件:

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

© www.soinside.com 2019 - 2024. All rights reserved.