前提・実現したいこと
C#で対戦型カードゲームを作成しようとしています。
カード自体に様々な効果をつけるため、Cardというクラスを作成し、その中にコストやフレイバーテキストなどのプロパティがあります。
C#
1internal abstract class Card 2 { 3 internal string Id { get; set; } 4 5 internal string Name { get; set; } 6 7 internal int Cost { get; set; } 8 9 internal string Flavor { get; set; } 10…
カードの効果を大まかにいくつかに分けて実装しようとしており、(回復、攻撃など)それぞれの効果についてインターフェースを実装しています。
この時、例えば攻撃の効果を持つカードは、大半が、相手にX(=コスト)ダメージを与える効果を持つが、特定のカードだけはX+1ダメージを与える効果を持つようにしたい場合について、どのように実装すればよいかが分かりません。(X+1については、カードによってX-1だったり、ターン数がそのままダメージになったりします。)
攻撃の効果を持つカードを、Cardクラスを継承した、AttackCardクラスを継承するようにして、X+1等の特定の値を返すクラスのみ、攻撃用メソッドをoverrideして実装しようかとも思いました。
しかし、攻撃、回復の両方の効果を持ち、プレイヤーがどちらの効果を使用するかを選択できるようなカードも作成したいと思っているため、多重継承ができないC#では実装はできないのかなと思っています。
この場合は、攻撃カード用のインターフェースを実装した大半の攻撃カードの攻撃用メソッドそれぞれについて、Xを返すような処理を書いていくしかないのでしょうか。
何か良い方法があれば教えてください。
試したこと
Cardクラスを継承したAttackCardクラスを継承させて、攻撃用メソッドをOverrideさせようとした。
=>攻撃、回復など、複数の効果を選択できるカードを作成予定のため断念
回答2件
あなたの回答
tips
プレビュー