Code Sketch


KOJO
By: Mhalsakant School
Category: Programming
// =====================================================
//        ? TURTLE EXTREME LINE PUZZLE
// =====================================================

val fdStep = 50
val fdStep2 = 10
val rtStep = 90
val rtStep2 = 10

val bgColor = white
val sBgColor = "white"

clear()
clearOutput()
beamsOn()

val width = canvasBounds.width
val height = canvasBounds.height

setBackground(bgColor)

// =====================================================
// DRAW BIG PUZZLE
// =====================================================

setPenColor(blue)
setPenThickness(8)

// START
setPosition(-450, -250)
setHeading(0)

// -------- PATH --------

forward(100)
right(90)

forward(100)
left(90)

forward(150)
right(90)

forward(100)
right(90)

forward(200)
left(90)

forward(100)
left(90)

forward(150)
right(90)

forward(200)
right(90)

forward(100)
left(90)

forward(150)
left(90)

forward(100)
right(90)

forward(200)
right(90)

forward(150)
left(90)

forward(100)
left(90)

forward(200)
right(90)

forward(100)
right(90)

forward(150)
left(90)

forward(200)
left(90)

forward(100)
right(90)

forward(150)
right(90)

forward(100)
left(90)

forward(200)
left(90)

forward(150)
right(90)

forward(100)

// =====================================================
// GOAL
// =====================================================

setPenColor(red)
setPenThickness(12)

setPosition(300, 150)
setHeading(0)
forward(50)

// =====================================================
// TURTLE TO START
// =====================================================

setPenColor(purple)
setPenThickness(5)

setPosition(-450, -250)
setHeading(0)

// =====================================================
// COMMANDS
// =====================================================

def action(code: String) {
    interpret(code)
    println(code)
}

val cmd = Map(

    // FORWARD
    "forward1" -> s"forward($fdStep)",
    "forward2" -> s"forward($fdStep2)",

    // RIGHT
    "right1" -> s"right($rtStep)",
    "right2" -> s"right($rtStep2)",

    // LEFT
    "left1" -> s"left($rtStep)",
    "left2" -> s"left($rtStep2)",

    // HOP
    "hop1" -> s"hop($fdStep)",
    "hop2" -> s"hop($fdStep2)"
)

// =====================================================
// BUTTONS
// =====================================================

def button(forcmd: String) =
    Picture.button(cmd(forcmd)) {
        action(cmd(forcmd))
    }

// =====================================================
// CONTROL PANEL
// =====================================================

val panel =
    trans(-width / 2, -height / 2) *
    scale(1.25) ->
    VPics(

        HPics(
            button("left2"),
            button("forward2"),
            button("right2"),
            button("hop2")
        ),

        HPics(
            button("left1"),
            button("forward1"),
            button("right1"),
            button("hop1")
        )
    )

draw(panel)

// =====================================================
// INSTRUCTIONS
// =====================================================

println("")
println("==========================================")
println("        TURTLE EXTREME PUZZLE")
println("==========================================")
println("")
println("? START = Purple Turtle")
println("? BLUE LINE = Correct Path")
println("? RED = GOAL")
println("")
println("FORWARD = ???? ??")
println("RIGHT   = 90� ??????? ??")
println("LEFT    = 90� ??????? ??")
println("")
println("????? RIGHT/LEFT ???? direction ????,")
println("???? FORWARD ????? ???? direction ????? ??.")
println("")
println("GOAL ?????? BLUE LINE follow ???!")
println("==========================================")