2006-12-14
[Ruby]スライムクラスとドラゴンクラス
C++ 使ってたころは Monster クラスを継承させた Slime クラスとか Dragon クラスとか、実際そんなことしないよなーと思っていた。だって、現実問題モンスターの種類は何十、何百となるわけで、そのデータはテーブル化したい。だったら、共通の Monster クラスのオブジェクトに値を設定する形にしないと不便だから。
でも Ruby だったら、モンスター固有のパラメータとか振る舞いをクラスやモジュールとして DSL 的に定義するのもありだね。モンスター名を示す文字列やシンボルから、それぞれのクラスのインスタンスを作れるもの。
monster = Monster.create(:dragon)
うーん、この発想はなかったわ。 Ruby ぜんぜん使いこなせてないなー。
しかも、 Ruby の場合はスクリプトが設定ファイルになるから、直接 DSL 的にデータを書けばいいわけだ。まあ作業分担するとエクセルを使いたがる人が多いから、実際はエクセルをパースして Ruby スクリプトをジェネレートするとかになりそうだけど。
--
まだまだ C の呪縛に縛られすぎなんだよね。発想が。 動的なんだよ、動的。真に目覚めるのはいつの日か。