Skip to content

Instantly share code, notes, and snippets.

@obelisk68
Created February 5, 2018 18:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save obelisk68/efccd74e0d2b5e60566bce743f53cd42 to your computer and use it in GitHub Desktop.
Save obelisk68/efccd74e0d2b5e60566bce743f53cd42 to your computer and use it in GitHub Desktop.
タートルグラフィックス
class Turtle
def initialize(width, height, ob)
@width, @height = width, height
@pen_po = Vector[0, 0]
@pen = ob
@dir = Vector[1, 0]
@color = [65535, 65535, 65535]
end
attr_accessor :pen_po, :dir
def left(deg)
θ = PI * deg / 180
@dir = Matrix[[cos(θ), -sin(θ)], [sin(θ), cos(θ)]] * @dir
end
def right(deg)
left(-deg)
end
def forward(length, draw = true)
next_po = @pen_po + @dir * length
if draw
@pen.color(*@color)
@pen.line(@width / 2 + next_po[0], @height / 2 - next_po[1],
@width / 2 + @pen_po[0], @height / 2 - @pen_po[1])
end
@pen_po = next_po
end
def back(length)
forward(-length, false)
end
def color(r, g, b)
@color = [r, g, b]
@pen.color(*@color)
end
def circle(radius, fill = false)
@pen.color(*@color)
@pen.circle(fill, @width / 2 + @pen_po[0], @height / 2 - @pen_po[1], radius)
end
def move(x, y)
@pen_po = Vector[x, y]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment