ゲームの状態を保存して後でリロードする必要があるタイピングのみのゲーム (グラフィックスなし) を作成しています。私は考えてきましたが、何も考えられませんでした (私は経験豊富なプログラマーではありません)。誰かが私を啓発できますか?
質問する
10288 次
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
あなたができるオブジェクトの状態を永続化するために
- シリアル化を使用する
- コンテンツをテキストまたは xml としてファイルに保存する
- コンテンツをデータベースに保存します (sqlLite、hsql)
于 2013-11-05T08:34:40.917 に答える