0

Nethack をベースにした Rogue Like ゲームを作成しています。ダンジョンをナビゲートするためのメソッドを配置するのに最適なクラスを決定する必要があります。現在、移動を実装している方法は、プレイヤーに char 入力を要求するだけです。(W、A、S、D を矢印として使用)。トリガー char がプログラムを終了するまでループするように、while をセットアップしました。このループでは、ダンジョンの状態を出力することから始めます。char の入力が求められ、その後にどの文字が入力されたかを確認する if ステートメントが続きます。これらの if ステートメントのそれぞれで、移動したい入力/方向に関連するメソッドを呼び出します。したがって、moveUp()、moveRight() などがあります。これらのメソッドを配置するのに最適なクラスを特定する必要があるだけです。これにより、メソッドがどのように呼び出され、何を渡すかが決まります。すぐ。

クラスを太字でリストし、継承をインデントで表します。関係する私のクラスは次のとおりです。

  • Entity : 基本クラス。基本的に、オブジェクトの一部またはすべてを表します
    • クリーチャー: 基本的にはダンジョン内の生き物「もの」を表します
      • Player : 基本的にクリーチャーの拡張版..誰がプレイするかのクラスです。
    • Item : Item と見なされるものの基本クラスとして機能します。
      • 武器: 武器..
      • : 鎧の一部..
      • 消耗品: 消費できるアイテム..他にもいくつかのクラスがあります

また、いくつかの独立したクラスがあります。

  • タイル: 「ゲームボード」上のスペース。Creature への ptr、Items へのポインターのベクトル、およびそのスペースが表すものを表示する char を保持します。
  • DungeonLevel : これは、1 つのレベルのゲームボード/グリッドです。これには、 Tileオブジェクトの 2D ベクトルがあります。

私はすでにダンジョンを適切に生成していますが、そうではありません。DungeonLevelオブジェクトごとに、すべてのタイルが同じ場所に留まります。そのため、プレーヤーまたはクリーチャーが移動すると (1 スポット)、プログラムはこれらのメソッドを呼び出してDungeonLevelオブジェクト (タイルの の2D ベクトル) を操作し、タイルからタイルに渡すことによってプレーヤー/クリーチャーが移動した場所を反映します。その後、プログラムはループを再開します。

これらのメソッドをどのクラスに配置すればよいかわかりません。基本的に、Creatures と Player を移動できるようにする必要があります。そして、プレーヤーは文字入力に基づいて移動します。ゲームで生成されたクリーチャー/モンスターは、プレイヤーに向かって 1 スペース移動します (可能な場合)。

したがって、エンティティを制御するために同じメソッドを使用する必要があるのか​​ 、DungeonLevelが動きを制御する必要があるのか​​ 、Creature基本クラスと派生したPlayerクラスに同じ移動メソッドが必要なのか、Creatureに独自の移動メソッドが必要なのかわかりませんPlayer は独自のものを持っている必要があります。

提案?ありがとう。

4

1 に答える 1