Turtle
2005 Klaus & Till Bovermann
A simple turtle implementation.
t = Turtle.new
(
t.init;
t.to(100@100);
t.turn(0.5pi);
t.penDown;
t.forward(100);
t.penUp;
t.turn(-0.5pi);
t.forward(100);
t.penDown;
t.forward(100);
)
w = SCWindow.new.front
(
w.drawHook = {
Pen.use {
t.stroke;
Color.red.set;
Pen.fillRect(Rect(100,100,4,4));
Color.green.set;
Pen.fillRect(Rect(0,0,4,4));
}
};
w.refresh;
)
f = {|turtle, length = 100, depth = 1|
if (depth <= 0, {
turtle.forward(length);
}, {
f.(turtle, length/3, depth-1);
// -60
turtle.turn(-pi*(1/3));
f.(turtle, length/3, depth-1);
// 120
turtle.turn(pi*(2/3));
f.(turtle, length/3, depth-1);
// -60
turtle.turn(-pi*(1/3));
f.(turtle, length/3, depth-1);
});
}
t = Turtle.new;
(
w = SCWindow.new.front;
w.drawHook = {
Pen.use {
Pen.rotate(0.2);
t.init;
t.to(100@100);
t.penDown;
f.(t, 200, 5);
t.turn(pi*(2/3));
f.(t, 200, 5);
t.turn(pi*(2/3));
f.(t, 200, 5);
t.stroke;
}
};
w.refresh;
)