Sha256: 1a759c9e9618cabc133300b1661e319393ae8dee4f837118af8cd221565399e5

Contents?: true

Size: 916 Bytes

Versions: 4

Compression:

Stored size: 916 Bytes

Contents

# Drawing code stolen from here:
#  http://www.rubyquiz.com/quiz104.html

$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")

require 'ray'

class Ray::Turtle
  def hilbert(s, n, k)
    return if n < 1
    left k * 90
    hilbert(s, n - 1, -k)
    forward s
    right k * 90
    hilbert(s, n - 1, k)
    forward s
    hilbert(s, n - 1, k)
    right k * 90
    forward s
    hilbert(s, n - 1, -k)
    left k * 90
  end
end

Ray::Game.new("Turtle") do
  register do
    add_hook :quit, method(:exit!)
  end

  scene :hilbert do
    img = Ray::Image.new window.size
    img.turtle do
      pen_up
      left 90
      backward 185
      right 90
      forward 185
      left 90

      pen_down
      hilbert(10, 5, 1)
    end

    @sprite = sprite img

    render do |win|
      win.draw @sprite
    end
  end

  push_scene :hilbert
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ray-0.2.1 samples/turtle/hilbert.rb
ray-0.2.0 samples/turtle/hilbert.rb
ray-0.1.1 samples/turtle/hilbert.rb
ray-0.1.0 samples/turtle/hilbert.rb