0

ゲーム内のマップ用の簡単なクラスを作成しようとしています。マップは、「タイル」構造体で作られた2次元ベクトルです。これらのタイルを行で入力/出力するための最良の方法を見つけようとしています。

たとえば、以前は.txtベースの読み込み形式を使用していました。.txtファイルは次のようになります。

1 0 2 0 0 0 2 4 5 6 3 
2 4 5 0 0 0 2 0 0 3 4
0 3 5 2 5 3 0 5 5 3 4
0 2 0 5 0 6 0 5 7 8 4

次に、行ごとに移動して、各タイルのID整数を見つけます。1は草を表し、0は水を表します。パーサーが行の終わりに達すると、intの次の行にスキップします。

現在、intの代わりにバイナリファイルと構造体を使用してfwriteとfreadを介してこれを実行しようとしています。どうすればこれを行うことができますか?私が見たのは、構造体の多次元配列を格納する方法ではなく、バイナリファイルに構造体の配列を格納する方法だけです。何か案は?

編集: はい、ファイルに2Dベクトルを保存することはできますが、それでは、必要なシームレスなマップの読み込みを行うことができません。私は大きなマップファイルを持っているので、一度に10万個のタイルをロードするとCPUを占有します。

4

1 に答える 1

0

マップを人間が読めるようにする場合は、パーサーを作成する必要があります。

ただし、気にしない場合は、まったく異なることを行う必要があります。たとえば、Boostからのシリアル化を使用します。

ゲームで非常に一般的なケースの 3 番目の代替方法は、マップを画像ファイルとして保存することです。次に、お気に入りの画像操作プログラムでマップを編集すると、プログラムで簡単に解釈できます。多くのライブラリは、画像データを読み取ることができます (そして、それを 2 次元配列として表示します)。ゲームでは、そのようなものが既に配置されている可能性があります。

于 2012-06-23T14:01:01.530 に答える