0

你好,堆垛机的朋友们!我在为我的游戏创建适当的保存功能时遇到问题。我遇到的主要问题是捕获名为 display 的 J 文本区域内的所有数据。显示屏反映了迄今为止游戏中的动作,显示屏顶部显示“欢迎来到 Togiz Kumalak”。

我的问题是当我保存游戏时,它只将第一行文本记录到文件中,而不是所有行。

一个例子是:

            Welcome to Togiz Kumalak
            Player 1 Cup 1
            Player 2 Cup 3

等等。当我保存文件时,只会显示第一行。

这是我当前用于保存侦听器的代码。

class SaveListener implements ActionListener
 {
    String a = display.getText();

    JFileChooser myChooser= new JFileChooser();
    public void actionPerformed(ActionEvent event)
    {
        String fileName;
        myChooser.setCurrentDirectory(new File("."));
        myChooser.showSaveDialog(null);

        fileName = myChooser.getSelectedFile().getPath();

        try
        {
            OutputStream file = new FileOutputStream(fileName);
            PrintStream printStream = new PrintStream(file);
            printStream.print(a);
            printStream.close();


    /*  Version 11, 23.1.  Scroll pane and text area support when saving.  */


        }

        catch(IOException e)
        {
            System.out.println("Problem making or writing to an output stream.");
            System.out.println(e);
        }
    }
}
4

2 回答 2

2

使用write(...)JTextArea API 的方法,而不是尝试创建自己的方法。

于 2014-04-30T05:24:59.620 回答
1

..为我的游戏创建正确的保存功能时 遇到问题

鉴于“正确”一词(我的重点),我必须指出,保存/加载游戏的正确方法是根据“游戏状态模型”,而不是“粗略地翻译成文本行的游戏状态模型”。

该游戏状态模型可能会根据数据的复杂性以多种方式保存,但应该使用与此方法使用的非常不同的序列化方法(在我们的代码中对数据进行编码/解码的工作更少)。

于 2014-04-30T06:43:51.457 回答