前田です。
ちょっと気になった点を。

moochan <moochan / ss.hitachizosen.co.jp> writes:

>   def reset!(beginning,ending,step=1)
>     @begin = beginning
>     @end = ending
>     @step = step
>     @direction = 1
>     @direction = -1 if @begin > @end
>     check_of_step
>   end

こういう場合、Rubyの一般的なコーディングスタイルでは!を付けません。
すべての破壊的メソッドに!を付けるわけではなくて、同じ機能のメソッド
で破壊的なバージョンと非破壊的なバージョンがある場合に、破壊的なバー
ジョンの方に!を付けることで両者を区別します。

>   def step
>     return @step
>   end
>   def step!(step)
>     @step = step; check_of_step
>   end

この場合は!を付けるのではなくて、

   def step=(step)
     @step = step; check_of_step
   end

とするのがRuby流です。

-- 
前田 修吾