抽象的なファイター クラスを持つテキスト ゲームを作成しています。ファイター内には、保護されたブール値 isGround と呼ばれる変数があります。次に、AirFighter と GroundFighter という名前の Fighter を拡張する 2 つの抽象クラスがあります。これらは基本的に isGround を、地上ユニットかどうかに応じて True または False に設定します。
次に、戦闘フェーズでプレイヤー 1 の速度がプレイヤー 2 よりも速いかどうかをゲームがチェックし、どちらが速いかに応じて p1.attack(p2) のように実行し、の統計を出力するようにゲームをセットアップします。その戦闘、各プレイヤーの残りの体力など。
一部のエアファイターが空中を攻撃する方法、または空中と地上を攻撃する方法が必要であり、一部のグラウンドファイターが地上のみ、または地上と空中を攻撃する方法が必要です。疎結合を維持しながら、これを行うにはどうすればよいですか? それはデザインパターンのクラスであり、私をイライラさせます。これを支援する設計パターンはありますか?
ゲームのスタークラフトを考えてみてください。それは基本的に私のゲームが模倣しているものです。海兵隊のような特定のユニットは地上と空中を攻撃でき、空中のみを攻撃できるユニットもあれば、両方を攻撃できるユニットもあります。厄介な if else チェックステートメントを使用せずにこれを実行できるようにしたいと考えています。