2006-12-15
[Ruby]アビリティーとモジュール
ということはだよ。例えば、そーだな、 FF5 みたいなジョブシステムだったとしよう。
キャラクターが戦闘中に使える能力は、現在のジョブとあと任意に自分が過去に習得したアビを一個選べるといった仕様だったと思う。
そしたら、そのジョブアビリティーを module として定義して、そいつをキャラクターインスタンスに extend してやる。すると、キャラクターが使えるアビの判定をメソッド呼び出しの結果をもって実現することができる。
module ナイト1 def かばう end end module ナイト2 def 守る end end module ナイト3 def 両手持ち end end character.extend ナイト1 character.extend ナイト3 character.かばう # => アクション発動 character.両手持ち # => nil か true character.黒魔法 # => NoMethodError → そのメソッドは覚えていません
深くは考えていないけど、なんとなくこんなイメージ。 もう少し考えて、実装案を具体化したい。