色の配列
DXRubyでは色の指定は3つないし4つの要素を持つ配列で行う。なぜこの形になっているのかというと、そのほうがコードを書くのがラクだったからだ。
例えばStarRubyとかMiyakoとかRGSSを見るとColorクラスというものが用意されている。Color.new(r,g,b,a=255)という見事にDXRuby以外共通の連合を組まれている。
まあ、正直なところ基本ARGBでAを省略してRGBというのは変だが。HLSLもRGBAだし。とはいえ今更なおすわけにも。
さてそのへんはRuby。気に入らなければ自分でクラスを作ればいいのだ。
たとえばこんな感じに。
require 'dxruby' class Color < Array def initialize(r, g, b, a = 255) super() self << a << r << g << b end def alpha self[0] end def red self[1] end def green self[2] end def blue self[3] end def alpha=(val) self[0] = val end def red=(val) self[1] = val end def green=(val) self[2] = val end def blue=(val) self[3] = val end end image = Image.new(100,100,Color.new(255,255,255)) Window.loop do Window.draw(100,100,image) end
ほら、同じ使い勝手になった。
同様にSpriteクラスの衝突判定範囲の指定もPointとかCircleとかBoxとかTriangleとかクラスを定義したら少しはわかりやすくなったりするのかもしれないな。