Code Sketch


Tangram Shapes
By: Sonali Govekar
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")