1

私は Visual Studio 2008 でゲームを構築しています。レベルを構築するために、2 種類のファイルを用意します (実際にはそれ以上ですが、私の質問にとって重要なのはこれら 2 種類だけです)。レベルの内容を指示すると、次のようになります。

LevelName = "サンプル レベル"

Object1Type = "カスタムオブジェクト"

Object1File = "WideFloor_DF"

Object1Position = 600,600

Object2Type = "円"

Object2Position = 550、500

オブジェクト 2 質量 = 5

もう 1 つはカスタム オブジェクトのプロパティを指定し、次のようになります。

名称=「ワイドフロア」

質量 = 1

GeometryMap = "WideFloor_GM"

IsStatic = true

私は正規表現にあまり詳しくありません(読んでください:ラインノイズに似すぎて簡単に理解できないため、好きではありません)、大量の正規表現を使用するよりも簡単な方法があるかどうか疑問に思っていましたか?

編集:私は何かを忘れていたことを知っていました!私はxmlファイルが本当に嫌いなので、それらを使用しないことを本当に望んでいます(waaaaaaaayは私には冗長すぎます). 編集 2: 私は自分が思いついたフォーマットが好きで、変更したくありません。

4

8 に答える 8

7

XML ファイルの使用についてはどうでしょうか。これらは XMLReader および XMLWriter オブジェクトを使用して簡単に読み書きでき、正規表現を扱う必要はまったくありません。

<Level name="Sample Level">
   <Object type="CustomObject" file="WideFloor_DF" positionX="600" positionY="600" />
   <Object type="Circle" file="WideFloor_DF" positionX="500" positionY="500" mass="5" />
</Level>     
于 2009-06-11T05:37:03.317 に答える
1

とにかく人間が読める形式でファイルを作成するのであれば、なぜ XML を使用しないのでしょうか?

于 2009-06-11T05:37:45.407 に答える
1

ファイル形式を制御できる場合は、.NET にパーサーがある XML ファイルや INI ファイルなど、既存のパーサーで何かを試すことができます。

上記の形式を気に入っている場合は、Lexなどのツールを使用してパーサーを生成できます。

于 2009-06-11T05:37:51.163 に答える
1

別のアプローチの 1 つは、このすべての構成データを保持するプロパティ/コレクションを持つクラスを定義し、それを [シリアル化可能] にすることです。次に、構成例を入力し、それをファイルにシリアル化して、手動で編集できる完全な XML 構成ファイルを作成します。構成を使用する準備ができたら、XML ファイルを逆シリアル化してアプリの構成オブジェクトに戻します。

于 2009-06-11T05:38:54.797 に答える
1

そのファイル形式の使用を絶対に主張する場合は、ファイルを 1 行ずつ読み取るオブジェクトを構築し、「=」の左側から物事を引き出して、それをキーとしてディクショナリに入れ、すべてをその右側に置くことができます。値として「=」。

ただし、XML ドキュメントを XMLDocument オブジェクトと共に使用するという上記の回答を繰り返す必要があります。LINQ to XML について調べましたか?

于 2009-06-11T05:43:33.183 に答える
0

さて、私があなたの質問を理解していれば、ファイルの内容を構造化して解析がはるかに簡単になるようにする方法が必要です.XMLはそのための良い選択であり、XSDはxmlファイルの内容を記述するためのものでもあります.LINQ XML に変換すると、C# から読み取るのに非常に適しています。

于 2009-06-11T05:39:17.137 に答える
0

XML を使用する場合は、ファイルを直接オブジェクトに逆シリアル化できるため、解析する必要はまったくありません。

于 2009-06-11T05:39:40.537 に答える
0

オブジェクトをバイナリシリアル化してみませんか。

于 2009-06-11T07:23:32.770 に答える