2

AS 3 を言語として Flash でターン制の RPG を作成していますが、使用している言語に関係なく、助けていただけると確信しています。

基本的に、私のアイデアは、すべての武器データを 1 つの多次元配列に配置することでした。インベントリに武器を簡単に追加したい場合は、inventoryArray.push(weaponArray[1])Easy を使用します。武器をインベントリに追加しただけです。

私は設計パターンを調べてきましたが、ほとんどの OOP 設計はクラスを使用し、スーパークラスから継承しているようです。Component-->Weapon-->Sword-->LongSword.

すべてのデータを 1 つの配列に入れるか、1 つの武器を含む 1 つのクラスで継承スタイルを使用して、どうすればよいですか?

どんなアイデアでも大歓迎です!基本的にゲーム自体の作り方は知っていますが、何パターンかは知らないだけです。

4

2 に答える 2

2

ゲーム内のほとんどのオブジェクトには、いくつかの共通のプロパティがあります。たとえば、すべてのオブジェクトに ID、名前、および説明があります。

継承を使用しないと、すべてのクラスに重複した情報が含まれることになり、ゲームの保守が難しくなります。

継承を使用する場合は、これらすべての共通プロパティを基本 (おそらく抽象) クラスに保持し、他のすべてのクラスにそれを継承させることができます。そうです、あなたが見たデザインパターンは行くべき道です。

また、 do ではなく、メソッドを持つクラスinventoryArray.push(weaponArray[1])も作成する必要があります。これにより、オブジェクトがインベントリに追加されたときにイベントをディスパッチできます。その後、フロントエンドはこのイベントをリッスンし、たとえば在庫のグラフィックを更新できます。一般に、インベントリやキャラクターなどの潜在的に複雑なオブジェクトには、一般的な Flash オブジェクト (配列、オブジェクトなど) を使用しないでください。独自のカスタム クラスを使用すると、ゲームがより複雑になったときにそれらを簡単に拡張できます。Inventoryadd()

于 2012-04-07T10:54:59.233 に答える
1

継承よりも構成が進むべき道だと思います。

武器、リング、ヘルム、シールド、ポーションなどに拡張できる基本的なゲームオブジェクト クラスがあります。これらにはすべて、継承によって管理できる一連の制限があります (武器を手とインベントリにのみ配置できるという事実など)。 )。しかし、これらすべての能力 (それらがキャラクターにどのように影響するか) は、構成を通じて行う必要があります。帯、手、頭などにオブジェクトを追加するたびに、構成を通じてキャラクターに影響を与えます。したがって、キャラクターのアクションを扱うときは、すべてのオブジェクトをループするのではなく、キャラクターのアクションの一部を適用するインベントリのすべての機能を備えた、攻撃などの複合関数を使用するだけです。


調べることができるもう 1 つのデザイン パターンは、デコレータ パターンです。結果は構成にかなり似ていることがわかりました。「デコレータ パターンでは、サブクラス化せずにオブジェクトに責任を追加できますが、複合パターンには別の目標があります。関連するオブジェクトを同じ方法で処理するためにクラスを構造化し、複数のオブジェクトを 1 つとして扱うことができます。」 ソース

デコレータ パターンの例: http://www.as3dp.com/2011/06/well-armored-warrior-decorator-for-beginners/

于 2012-04-07T18:27:03.007 に答える