Sha256: 387d957a887ad2d7688ca7744d125450c95ef6c1798aa5d02649f743735f2dda

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 KB

Contents

#!/usr/local/bin/ruby -w
# -*- coding: utf-8 -*-

require "graphics"
$: << "."
require "examples/editor"

class Turtle < Graphics::Body
  attr_accessor :src, :pen

  def initialize w, src
    super w
    self.x = w.w/2
    self.y = w.h/2
    self.a = 90
    self.src = src
    self.pen = true
  end

  def draw
    self.x = w.w/2
    self.y = w.h/2
    self.a = 90

    src.each do |line|
      case line
      when "pd" then
        self.pen = true
      when "pu" then
        self.pen = false
      when /rt (\d+)/ then
        self.a -= $1.to_i
      when /lt (\d+)/ then
        self.a += $1.to_i
      when /f (\d+)/ then
        dist = $1.to_i

        w.angle x, y, a, dist, :white if pen
        move_by a, dist
      else
        src.delete line
        warn "ERROR: #{line}"
      end
    end
    draw_turtle
  end

  def draw_turtle
    p1 = w.project(x, y, a, 15)
    p2 = w.project(x, y, a+90, 5)
    p3 = w.project(x, y, a-90, 5)

    w.polygon p1, p2, p3, :green
  end
end

class Logo < Editor
  attr_accessor :turtle

  def initialize
    super
    self.turtle = Turtle.new self, lines
  end

  def draw_scene
    turtle.draw
  end
end

Logo.new.run if $0 == __FILE__

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
graphics-1.0.1 examples/logo.rb
graphics-1.0.0 examples/logo.rb
graphics-1.0.0b6 examples/logo.rb
graphics-1.0.0b5 examples/logo.rb
graphics-1.0.0b4 examples/logo.rb