• 締切済み

オブジェクト指向によるポケモンの「技」の実装方法

現在、勉強のためJavaを使ってポケモンのバトルシステムのデモを作成しています。 ポケモンの技を実装したいのですが、ポケモンの技の内容(処理内容)にバリエーションが多すぎて困っています。 多かれ少なかれ、技には似たような性質があるのでポリモーフィズムを使えばよいと思っているのですが、 「次のターン必ず相手がねむる」 「相手の攻撃をすべて自分に向ける」 「敵に同じ技をださせなくする」 など、イレギュラーな要素も多くて実装方法に困っています。 どのようにすればスマートに実装できるか、お力を貸して頂けたら幸いです。

みんなの回答

回答No.3

>それとも、プログラム自体をデータベースに登録するということでしょうか? そんなわけはない。 >イレギュラーの要素に対応しようとすると属性が増えたり正規化が辛そうだと考えたのですが イレギュラーが発生する値は単純に○%とかでいいのでは?

gao07
質問者

お礼

パソコンが故障していたため返信がおくれてしまいました、すみません。 イレギュラーというのはクラスの構造的なもので、技をによって色々なデータが必要になるとポリモーフィズムも意味がなくなるのではないか、という意味でした。 説明不足でした。 地道に少しずつ実装していくことにします。 ありがとうございました。

回答No.2

>いっそのこと 「skill パッケージに全スキル手書きでプログラム書いてしまう」というのも手だと思います。 個人的にはここはデータベースを利用するかな。

gao07
質問者

お礼

ご回答ありがとうございます。 DBの利用も考えたのですが、イレギュラーの要素に対応しようとすると属性が増えたり正規化が辛そうだと考えたのですが、その程度ならDB構築としては許容範囲内でしょうか? それとも、プログラム自体をデータベースに登録するということでしょうか?

回答No.1

interface BattleSkill { void act( BattleCondition cond ) } という感じで、戦闘の状況を自由にいじれるようにしておくとよいのではないでしょうか。同じようなものをまとめても構いませんが、逆に複雑化する可能性があるので、いっそのこと 「skill パッケージに全スキル手書きでプログラム書いてしまう」というのも手だと思います。

gao07
質問者

お礼

まとめて複雑になると本末転倒なので、1つ1つ書いていくというのも手なのですね。 ご回答ありがとうございました。