Code Sketch


Stop Sign
By: Lalit Pant [2]
val x = 100 // outer red octagon size
val y = 95 // inner white octagon size

def rpoly(sides: Int, size: Int) {
    repeat (sides) {
        forward(size)
        right(360.0/sides)
    }
}

clear()
setAnimationDelay(100)
setFillColor(red)

// outer poly
rpoly(8, x)

// get to the right spot for the inner poly
penUp()
right()
forward( 0.5 * (x -y) * (1 + math.sqrt(2)))
left()
forward( 0.5 * (x -y))
penDown()

// inner poly
setPenColor(white)
setPenThickness(4)
rpoly(8, y)

val stop = "STOP"
val stopSize = 50
val tsize = textExtent(stop, stopSize)

// get to the right spot for "STOP" text
penUp()
right()
forward( 0.5 * (y * (1 + math.sqrt(2)) - tsize.width))
left()
forward( 0.5 * (y - tsize.height) + tsize.height)
penDown()

setPenFontSize(stopSize)
write(stop)