xxxxxxxxxx
50
let turtle;
function setup() {
createCanvas(windowWidth, windowHeight);
turtle = new Turtle(width/2,height/2,0,0);
}
function draw() {
background(255,255,255);
turtle.forward(1);
}
class Turtle {
constructor(x, y, targetX,targetY) {
this.lineOrigin = createVector(x, y);
this.pos = createVector(x, y);
this.target = createVector(targetX,targetY);
let direction = p5.Vector.sub(this.target, this.pos);
this.angle = degrees(atan2(direction.y, direction.x));
this.penDown = true;
}
forward(steps) {
if (this.penDown) {
let newpos = p5.Vector.fromAngle(radians(this.angle)).setMag(steps).add(this.pos);
line(this.lineOrigin.x, this.lineOrigin.y, newpos.x, newpos.y);
this.pos = newpos;
} else {
this.pos.x += steps * cos(radians(this.angle));
this.pos.y += steps * sin(radians(this.angle));
}
}
turn(angle) {
this.angle += angle;
}
penUp() {
this.penDown = false;
}
penDown() {
this.penDown = true;
}
}