2016-04-20 10 views
0

例として、以下の統計を保存したいとします。Javaテキストベースのゲームのシリアル番号ベースの保存システムを作成するには?

インテリジェンス、(その中に見つかった文字列とないものとの全体としてのオブジェクトインスタンス、)

在庫、

ゴールド。

私の考えは、単にminecraft、yknowのようなシードメソッドを使用することです。現在のゲーム=の

状態(あなたが保存して終了]ボタンを押したときに生成されたランダムな8文字コード、。)

ゲームをロードするには、単に入力コード。 (それともアプリケーションを閉じた後、その種子を維持する方法は?おそらく、txtファイルか何かでコードでフォルダを作成するアプリをcodding、そしてそこから種を取って?申し訳

私の質問の混乱場合私はここにQ_Q

ゲームのこの種でセーブ/ロード機能を実装するためのおかげで再び!

+0

これはシードではなく、ランダムに生成されるファイル名です。 Minecraftの世界シードは異なります。アルゴリズムの世界を生み出すために使用されています。プレイヤーの現在の在庫や統計情報をエンコードしません。 – Blorgbeard

答えて

2

文字列を使用する場合は、保存する必要のあるデータの量によって異なります。

まず、ランダムな文字列は機能しません(私は...おそらくいくつかの本当に(本当に本当に複雑な)数学で...?)。さまざまな文字をすべて特定の値にしてそこから作業するのは簡単です。

まず、ゲームの現在の状態を保存するために必要なビット数を把握する必要があります。これには、プレーヤーの現在の部屋/レベル/ページ、プレーヤーの健康状態やお金の量などが含まれます。

次に、使用できる文字を選択する必要があります。人生を楽にするために、2^Nの異なる文字が必要です(バイナリで並んでいます)。 16進数は、各文字が正確に4ビットのデータを表現するために使用できるので、これ(0-9、A-F)に対してはうまく機能します(数字の16進数と2進数表記を参照してください)。

hexを使用すると、8文字の文字列に最大32ビットのデータを入れることができます。ゲームには十分であれば、簡単な16進文字列を使ってセーブを簡単に処理できます。


たとえば、あなたがそれらのゲーム本の1つを言っていて、0〜200のページ番号、0〜10の健康、0〜1000の金を保存したいとしましょう。これは、ページ番号に2文字、健康に1文字、お金に3文字を意味します。たとえば、3つの健康状態と854のお金がある16ページでは、これは次のように解釈されます。

page: 16, health: 3, money: 623 => 10 - 3 - 26F = 10326F

逆に、28A2F0はに変換でしょう。

もちろん

28A2F0 = 28 - A - 2F0 = level: 40, Health: 10, money: 752

が、これはそれがどのように動作するか確認するためにも、プレーヤーのために非常に簡単ですので、あなたにもデータを難読化するために単純なアルゴリズムを使用することもできます(つまり、文字の順序をまぜこぜ従来の16進数の代わりに16個のランダムな文字を使用するなど)。

+0

ない、私はバイトとか考えられません... 私は間違いなくこれを検討する必要があります^ _^ ありがとう! – Codster

1

最も簡単な方法を探しています何一致する何かを見つけることができなかったので、私は、任意のコードを入れていませんテキストファイルを作成し、そこに保存したいものを書き込むことです。

この最初のテキストファイルの行あなたの金である、2番目のラインはあなたの知性などとなります。プログラムは、 "inventory:"と読む行が見つかるまで、各行を1つずつ順番に調べます。それ以降のすべての行は在庫のアイテムになります。

基本的に、最初の行は常に金色になり、2行目は常にHPになり、3行目からはファイルの最後が在庫アイテムになるまで続きます。

シードを使用してminecraftがワールドをロードする方法は、それよりも少し複雑であり、実際のセーブ/ロードではうまく動作しません。

+0

私が明らかにしたように、Minecraftの種は、ゲームの状態(健康、在庫など)を把握するのではなく、世界を生み出すために使われます。あなたは同じシードで同じ世界を生み出すことができますが、他のすべての情報は@PotatoIng_がどのように記述されているかのように別々のファイルに保存されます – MadcoreTom

+0

ああ、うれしいです。 、 保存現在のデータのすべてのtxtファイルにタイトルに、このtxtファイル、または多分名作成の事、識別子のいくつかの種類、 をコードを生成それからちょうど呼び出す:だから、私は次の操作を行うことができたとしこのtxtファイルは起動時に変更されるたびに上書きされます。 正しく理解していませんか? – Codster

+0

@Codster youreはそれを完全に理解しています:3。私は彼にファイルの名前をつけたいと思っているのか、それに名前を付けて保存するのか、ユーザーに尋ねることをお勧めします。その後、ユーザーがゲームを開始すると、どのファイルを読み込みたいか尋ねることができます。そうすれば、複数の保存ファイルを持つことができます。保存フォルダにすべてのファイルをリストして、どのファイルをlaodしたいかをユーザーに尋ねることさえできます。あなたはtxtファイルに名前をつけるために、 の 文字列のようになります(つまり、私はそれが本当に好きですか?) –

関連する問題