Sha256: 4e1e3757147d174c37ed85c0fd3a4a53ee8ed43734d4c208463f402fffcfe5e3

Contents?: true

Size: 1.16 KB

Versions: 3

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

3 entries across 3 versions & 1 rubygems

Version Path
graphics-1.1.2 examples/logo.rb
graphics-1.1.1 examples/logo.rb
graphics-1.1.0 examples/logo.rb