1

2DベースのRPGゲームを作成しています。ゲームボーイのポケモンに似ています。基本的に、私のゲームマップはxxxサイズの地形で作成されます。風景のオブジェクト(木、低木など)だけでなく、手に負えないもの(つまり、看板、ドア、アイテムなど)もあります。現在、これらのオブジェクトをハードコーディングしています。問題は、風景オブジェクトや地形タイルなどを追加するたびに、そのオブジェクトのクラスを追加して追加したり、別のデータを指定したりする必要があることです。 。基本的に、私はとても単純なことをするために多くの反復的なタスクをしなければならないように感じます。

後で、私のプロジェクトが管理不能になるのではないかと心配しています。'GridElement'と呼ばれるクラスから継承された新しい地形、風景、またはその他のオブジェクトの各部分。

したがって、すべてのタイル、シーナリーなどの情報を外部XMLファイルに入れて実行時にロードするか、これらの要素をハードコーディングし続ける方がよいでしょうか。

主な問題は、これらの要素のほとんどに特定の機能を適用する必要があることです。それらのいくつかは、踏まれたときにイベントを呼び出す必要があります。一部の要素も動的です(たとえば、水、花など、タイルは数秒ごとに変化します)。

助けてくれてありがとう!

乾杯!

4

2 に答える 2

2

データをデータファイルに入れ、それらのデータファイルを処理するコードを作成することをお勧めします。複数の理由があります。1つは、この方法でデータをより管理しやすくすることです(つまり、データがよりクリーンに整理され、見つけやすくなります)。もう1つの重要な利点は、データの変更が容易になることです。他の人と一緒に作業する場合は大きな違いがありますが、個別に作業する場合でも、コード自体ではなく構成ファイルにある場合は、すべてのゲームプレイ値を微調整する方がはるかに簡単です。

注意点は、多くの場合、異なる種類の要素に対して別々のクラスを用意し、XMLでそれらのクラスを参照する必要があることを意味します。例えば:

<grid_element>
  <class>GrassElement</class>
  <image>dark_grass.png</image>
  <xpos>10</xpos>
  <ypos>10</ypos>
</grid_element>

しかし、可能な限りハードコーディングされたものから離れて、データファイルでそれを行います。たとえば、呼び出されるさまざまなイベントをXMLで定義できます。

<step_event>somethingOrOther</step_event>
于 2011-09-14T12:20:36.660 に答える
2

大まかなルールとして、動作を表現する場合にのみ新しいクラスを作成し、データを使用してこのクラスのパラメーターを制御する必要があります。

あなたの場合、花、低木、壁などのために1つの風景クラスが必要になるでしょう。次に、関数を呼び出してビットマップ、アニメーション速度を設定することにより、このクラスのオブジェクトをカスタマイズできます。その場合、このデータがどこから来ているかは実際には重要ではありません。ハードコーディングされているか、オブジェクトファクトリから来ているか、xmlから読み取られている可能性があります。

対話可能なオブジェクトについては、追加のクラスが必要ですが、特定のものよりも一般的なものにするようにしてください。したがって、ユーザーがオブジェクトを操作するときにメッセージを表示する場合は、記号クラスではなく、一般的な操作クラスがあります。このクラスは、看板、本棚、不思議な見た目のアイテムに使用できます。

特別なイベントになると、いくつかのオプションがあります。最も簡単なのは、一般的なイベントクラスを作成することです。これにより、新しいアクターを画面に表示したり、プレーヤーにオブジェクトを付与したりできます。または、ユーザーが特定のトリガーを押したときに呼び出されるオブジェクトに関数ポインター/デリゲートを渡すこともできます(つまり、正方形に足を踏み入れ、モンスターを倒します)。最後に、ポケモンや同様のゲームが使用するものの中で最も複雑ですが、独自のスクリプト言語を作成/使用することができます。

于 2011-09-14T12:40:35.580 に答える