Guaranteed to be correct twice a day.
Log in to post a comment.
// Forked from "Digital Clock" by maraz // https://turtletoy.net/turtle/c8cda63d7b Canvas.setpenopacity(1); const digitHeight = 45; //min=10 max=70 step=1 const digitWeight = 3; //min=1 max=5 step=1 const xOffset = 0; // // min=-100 max=100 step=1 // set the time manually const hours = 0; //min=0 max=23 step=1 const minutes = 0; //min=0 max=59 step=1 const digitSpacing = 1 * digitWeight; const halfWeight = digitWeight/2; const step = 0.05; const segmentLength = (digitHeight-digitWeight-4*halfWeight)/2; const digitWidth = 4*halfWeight + segmentLength + digitSpacing; const semicolonWidth = 2*halfWeight+2*digitWeight; Turtle.prototype.drawSegment = function() { this.pendown(); for (let i = 0; i <= segmentLength; i+= step) { const left = this.clone(); const right = this.clone(); const angle = i < segmentLength/2 ? 45 : 135; left.left(angle); left.forward(halfWeight); right.right(angle); right.forward(halfWeight); this.forward(step); } this.penup(); } Turtle.prototype.skipSegment = function() { this.penup(); this.forward(segmentLength); } Turtle.prototype.drawDigit = function(d) { const x = this.x(); const y = this.y(); d = parseInt(d); this.penup(); this.forward(halfWeight); ([0, 2, 3, 5, 6, 7, 8, 9].indexOf(d)!==-1) ? this.drawSegment() : this.skipSegment(); this.forward(halfWeight); this.right(90); this.forward(halfWeight); ([0, 1, 2, 3, 4, 7, 8, 9].indexOf(d)!==-1) ? this.drawSegment() : this.skipSegment(); this.forward(halfWeight); this.forward(halfWeight); ([0, 1, 3, 4, 5, 6, 7, 8, 9].indexOf(d)!==-1) ? this.drawSegment() : this.skipSegment(); this.forward(halfWeight); this.right(90); this.forward(halfWeight); ([0, 2, 3, 5, 6, 8, 9].indexOf(d)!==-1) ? this.drawSegment() : this.skipSegment(); this.forward(halfWeight); this.right(90); this.forward(halfWeight); ([0, 2, 6, 8].indexOf(d)!==-1) ? this.drawSegment() : this.skipSegment(); this.forward(halfWeight); this.forward(halfWeight); ([0, 4, 5, 6, 8, 9].indexOf(d)!==-1) ? this.drawSegment() : this.skipSegment(); this.backward(segmentLength+halfWeight); this.right(90); this.forward(halfWeight); ([2, 3, 4, 5, 6, 8, 9].indexOf(d)!==-1) ? this.drawSegment() : this.skipSegment(); this.goto(x, y); this.forward(digitWidth); } Turtle.prototype.drawSemicolon = function() { const x = this.x(); const y = this.y(); const h = this.h(); this.penup(); this.forward(2*halfWeight); this.right(90); this.forward(segmentLength); for (let i = 0; i < halfWeight; i+=step) { this.pendown(); this.circle(halfWeight-i); this.penup(); this.right(90); this.forward(step/2); this.left(90); } this.left(90); this.forward(halfWeight/2); this.right(90); this.forward(segmentLength*0.75); for (let i = 0; i < halfWeight; i+=step) { this.pendown(); this.circle(halfWeight-i); this.penup(); this.right(90); this.forward(step/2); this.left(90); } this.goto(x, y); this.seth(h); this.forward(semicolonWidth); } Turtle.prototype.drawCurrentTime = function() { // get the current time // const now = new Date(); // const hours = now.getHours(); // const minutes = now.getMinutes(); const hs = hours < 10 ? "0" + hours : "" + hours; const ms = minutes < 10 ? "0" + minutes : "" + minutes; hs.split('').map(d => this.drawDigit(d)); this.drawSemicolon(); ms.split('').map(d => this.drawDigit(d)); } const turtle = new Turtle(); turtle.penup(); turtle.goto(-2*digitWidth + xOffset, -digitHeight*0.5+halfWeight); turtle.pendown(); function walk(i) { turtle.drawCurrentTime(); return false; }