Jewel-mmo開発日記

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

[Ruby]どこまでDRY?

なんかこういうコードがDRYでない気がしてくるのですが。

@maxx = screen.w - @image.w
@maxy = screen.h - @image.h
@x = rand(@maxx)
@y = rand(@maxy)
@vx = rand(5) + 5
@vy = rand(5) + 5

じゃあこうするんですか?

[[:x, :w], [:y, :h]].each do |x, w|
  eval "@max#{x} = screen.#{w} - @image.#{w}
       @#{x} = rand(@max#{x})
       @v#{x} = rand(5) + 5"
end

うーむ。