Code Sketch
KOJO
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("==========================================")