Code Sketch
Tangram Shapes
cleari
setSpeed(superFast)
setBackground(white)
def square (steps:Long) :Unit=
if (steps==0) {
()
}
else {
setPenColor(black)
setPenThickness(10)
forward(500)
right
square(steps-1)
}
val n = 4
repeat(n)
{
square(4)
left
}
forward (90)
// Picture draws everything from the centre.
def shape1 = Picture{
setFillColor(black)
right(135)
forward(141.42)
left(135)
forward(200)
left(135)
forward(141.42)
}.thatsStrokeColored(white)
def shape2 = Picture{
setFillColor(black)
right(135)
forward(141.42)
left(135)
forward(200)
left(135)
forward(141.42)
}.thatsStrokeColored(white)
def shape3 = Picture{
setFillColor(black)
right(135)
forward(70.71)
right(90)
forward(70.71)
right(90)
forward(70.71)
right(90)
forward(70.71)
right(90)
}.thatsStrokeColored(white)
def shape4 = Picture{
setFillColor(black)
right()
forward(100)
left(135)
forward(70.71)
left(90)
forward(70.71)
}.thatsStrokeColored(white)
def shape5 = Picture{
setFillColor(black)
left(45)
forward(70.71)
left(135)
forward(100)
left(135)
forward(70.71)
}.thatsStrokeColored(white)
def shape6 = Picture{
setFillColor(black)
forward(100)
right(135)
forward(70.71)
right(45)
forward(100)
right(135)
forward(70.71)
}.thatsStrokeColored(white)
def shape7 = Picture {
setFillColor(black)
left(45)
forward(141.42)
left(135)
forward(100)
left(90)
forward(100)
}.thatsStrokeColored(white)
def tangram = picStack(
Picture {},
shape3.thatsRotated(-45),
shape5.thatsRotated(45).thatsTranslated(0, -70.71),
shape1.thatsRotated(45).thatsTranslated(0, -(70.71+70.71)),
shape2.thatsRotated(90).thatsTranslated(100, -100),
shape6.withFlippedX.thatsRotated(-45),
shape7.thatsRotated(-135).thatsTranslated(-70.71, 70.71),
shape4.thatsRotated(-45).thatsTranslated(0, 141.42)
)
tangram.thatsTranslated(200,-280).draw
def rocket = picStack(
Picture {},
shape1.thatsFilledWith(black).thatsRotated(90).thatsTranslated(0, 0),
shape1.thatsFilledWith(black).thatsRotated(-90).thatsTranslated(100, 100),
shape3.thatsFilledWith(black).thatsRotated(90).thatsTranslated(100, 100),
shape4.thatsFilledWith(black).thatsRotated(180).withFlippedX.thatsTranslated(150, 150),
shape5.thatsFilledWith(black).withFlippedX.thatsRotated(0).thatsTranslated(-150, 50),
shape6.thatsFilledWith(black).thatsRotated(90).withFlippedX.thatsTranslated(150,-50),
shape7.thatsFilledWith(black).thatsRotated(90).withFlippedX.thatsTranslated(-100, 100)
)
rocket.thatsRotated(-90).thatsTranslated(-350, 300).draw
def boat = picStack(
Picture{},
shape7.thatsRotated(45).thatsTranslated(0, -50).thatsFilledWith(black),
shape6.thatsRotated(225).withFlippedX.thatsTranslated(0,-50).thatsFilledWith(black),
shape1.thatsRotated(270).thatsTranslated(-100, 60).thatsFilledWith(black),
shape1.thatsTranslated(-100, 60).thatsFilledWith(black),
shape3.thatsRotated(45).thatsTranslated(0, 30).thatsFilledWith(black),
shape4.thatsRotated(135).thatsTranslated(70, 30).thatsFilledWith(black),
shape4.thatsRotated(135).thatsTranslated(141.42, -40).thatsFilledWith(black),
)
boat.thatsTranslated(-250,-350).draw
def butterfly = picStack(
Picture {},
shape3.thatsRotated(45).thatsFilledWith(black),
shape4.withFlippedY.thatsRotated(45).thatsFilledWith(black),
shape5.thatsRotated(45).thatsTranslated(70.71, -70.71).thatsFilledWith(black),
shape1.thatsRotated(-45).thatsTranslated(70.71, 70.71).thatsFilledWith(black),
shape6.thatsTranslated(-50,-50).thatsRotated(-45).withFlippedY.thatsFilledWith(black),
shape7.thatsRotated(-45).withFlippedX.thatsTranslated(-70.71,-141).thatsFilledWith(black),
shape1.thatsRotated(-135).thatsTranslated(-70,0).thatsTranslated(0,70).thatsFilledWith(black),
)
butterfly.thatsTranslated(250,250). draw
//writing text
// Butterfly
right
hop(150)
left
setPenThickness(5)
setPenFontSize(50)
write("Butterfly")
// rocket
left
hop(320)
right
write("Rocket")
//boat
left(180)
hop(200)
right(-180)
write("Boat")
//bird
right
hop(350)
left(90)
hop(50)
write("Bird")