0

ゲームの状態を保存して後でリロードする必要があるタイピングのみのゲーム (グラフィックスなし) を作成しています。私は考えてきましたが、何も考えられませんでした (私は経験豊富なプログラマーではありません)。誰かが私を啓発できますか?

4

3 に答える 3

2

そのメソッドを使用ObjectOutputStreamおよび呼び出してwriteObject、ゲームの状態を保存できます。

そしてObjectInputStream、そのメソッドを使用して呼び出し、readObjectゲームの状態を読み込みます。

例えば

ゲームの状態を保存

public void saveGameDataToFile(File file) {   

    try {   
        FileOutputStream fileStream = new FileOutputStream(file);   
        ObjectOutputStream objectStream = new ObjectOutputStream(fileStream);   

        objectStream.writeObject(flag);   
        objectStream.writeObject(color);   
        objectStream.writeObject(snake);   
        objectStream.writeObject(food);   
        objectStream.writeObject(new Integer(score));   

        objectStream.writeObject(barrier);   
        objectStream.writeObject(new Boolean(needToGenerateFood));   
        objectStream.writeObject(new Boolean(needToGenerateBarrie));   

        objectStream.close();   
        fileStream.close();   

        JOptionPane.showConfirmDialog(frame, 
            "Save game state successfully.", 
            "Snake Game",   
            JOptionPane.DEFAULT_OPTION);   
    } catch (Exception e) {   
        JOptionPane.showConfirmDialog(frame, 
            e.toString() + "\nFail to save game state.",   
            "Snake Game", 
            JOptionPane.DEFAULT_OPTION);   
    }   
}   

ゲームの状態を読み込む

public void loadGameDataFromFile(File file) throws ClassNotFoundException{   

    ... ...

    FileInputStream fileStream = new FileInputStream(file);   
    ObjectInputStream objectStream = new ObjectInputStream(fileStream);   

    svaedFlag = (int[][]) objectStream.readObject();
    savedColor = (Color[][]) objectStream.readObject();     
    savedSnake = (Snake) objectStream.readObject();   
    savedFood = (Grid) objectStream.readObject();   
    savedScore = (Integer) objectStream.readObject();   
    savedBarriers =(Barriers) objectStream.readObject();   
    savedNeedToGenerateFood = (Boolean)objectStream.readObject();   
    savedNeedToGenerateBarrie = (Boolean)objectStream.readObject();   
    ... ...
}
于 2013-11-05T08:42:12.153 に答える
0

あなたができるオブジェクトの状態を永続化するために

  1. シリアル化を使用する
  2. コンテンツをテキストまたは xml としてファイルに保存する
  3. コンテンツをデータベースに保存します (sqlLite、hsql)
于 2013-11-05T08:34:40.917 に答える