Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
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 → そのメソッドは覚えていません

深くは考えていないけど、なんとなくこんなイメージ。 もう少し考えて、実装案を具体化したい。