Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2007-03-03

[MyGame]キーワード引数を導入

プリミティブクラスの API をキーワード引数っぽく変更。 内部的にはかなり大きな変更になってしまった。

これまでは、例えば画像クラスを作る場合、以下のように new の引数でスクリーン座標を渡すことができた。

image = Image.new(filename, x, y)

x, y は省略できる。 でもインスタンス生成時には x, y 以外のいろんなパラメータを渡したいので、 new の引数が一部の属性に固定されているのは辛い。

今回の仕様変更で、次のような書き方が可能になった。

image = Image.new(filename, :x => x, :y => y)
image = Image.new(filename, :alpha => 128, scale => 2.0, angle => 90)

オプションはこのようにハッシュを使って渡す。 フォントの場合は第 1 引数が文字列で、その後ろにオプションを渡す。

font = Font.new("Hello", :size => 20, :color => [255, 0, 0])

テストプログラムをいろいろ書いてみたが、やっぱりこのほうが便利なので、たぶんこれを採用する。