私は現在、Java ゲームの設計に取り組んでおり、クラス間の循環依存の問題に遭遇しました。これが私の現在の問題の(簡略化された)例です:
class Game
class Player
class Ability
ゲームにはプレイヤーがいて、プレイヤーは能力 (呪文や攻撃など) を持っています。アビリティには次のようなメソッドがあります。
public void perform(Player source, Game game);
問題は、そのアクションを実行するために、アビリティがゲーム (およびプレイヤー/ゲーム オブジェクト) の知識を必要とすることです。これを解決する方法はありますか?
更新: 返信ありがとうございます。アビリティは実際にはプレイヤーが所有すべきではないことがわかりました。プレイヤーとアビリティをリンクする方法がわかりません。たとえば、各クリーチャーが使用できる能力を持っているポケモンのようなゲームを考えてみましょう。または、各カードがゲームのあらゆる部分に影響を与える能力を持つことができる収集可能なカードゲームを利用してください. アビリティがプレイヤーによって直接所有されていない場合でも、どのプレイヤー (またはアビリティを使用するオブジェクト) がどのアビリティを使用できるかを判断する何らかの方法が必要です。