1

Java ゲームを作成しました。ゲームが終了すると、ユーザーに自分の名前を入力するように指示するメソッドが実行され、スコアが playscores.txt ドキュメントに保存されます。これはうまくいっています。ただし、このドキュメントには複数の人のスコアが必要です。ゲーム名とスコアをプレイするすべての人がこのドキュメントに保存されるようにしたい. 助けていただければ幸いです。

これは私のgameCompleteメソッドコードです:

public void gameComplete() throws IOException {
    String name = (String) JOptionPane.showInputDialog(
            frame,
            "Enter your name: ",
            "Save Score",
            JOptionPane.PLAIN_MESSAGE);
    Score score = new Score(player.getScore(), name);
    FileWriter fstream = new FileWriter("playerscores.txt");
    BufferedWriter out = new BufferedWriter(fstream);
    out.write("Name : " + score.getName() + System.getProperty( "line.separator" )  );
    out.write("Score : " + score.getScore());
    out.close();
}

Objectoutputstream などのさまざまなものを試しましたが、残念ながらその方法を理解できず、それが可能かどうか疑問に思っていました。さらに、これを行うためにどのクラスを使用する必要があるかを知りたいです。

4

3 に答える 3

1

まず、ファイルを毎回消去して書き込むのではなく追加する場合は、2 番目の引数 true を追加して、テキストを追加するようにしてください。

CSV ファイルを使用して回答を列に保存し、コンマを使用してデータを解析して読み取ることができます。

FileWriter fileW = new FileWriter("playerscores.txt", true);

それが役立つことを願っています。

于 2013-04-01T21:30:47.307 に答える
1

複数の人にそれを行うには、ファイルを追加モードで開く必要があります。

FileWriter fstream = new FileWriter("playerscores.txt",true);

構文: public FileWriter(File file, boolean append)

パラメーター:

  • file - 書き込み先の File オブジェクト

  • append - true の場合、バイトはファイルの先頭ではなく末尾に書き込まれます。

デフォルトでは、appendパラメータはfalseです。そのため、以前は、前のプレーヤーのスコアを現在のスコアで上書きしていました。

于 2013-04-01T21:28:52.323 に答える
1

新しいスコアをファイルの末尾に追加するだけでよければ、次のように置き換えます。

FileWriter fstream = new FileWriter("playerscores.txt");

と:

FileWriter fstream = new FileWriter("playerscores.txt", true);

複数のユーザーが同時にプレイできる場合は、ファイルにアクセスする際の競合状態を回避するために、ファイル ロックも使用する必要があります。

于 2013-04-01T21:28:00.477 に答える