Code Sketch


Republic Day Art Remix
By: Aditya Pant
Category: Art
// An updated version of the earlier republic day drawing 
// using pic.thatsXX transforms
// works with Kojo 2.9.18 and later

size(775, 527)
cleari()
setAnimationDelay(0)
originBottomLeft()

initRandomGenerator(-4566063618077315813L)

val bgc1 = cm.linearGradient(0, 0, Color(255, 222, 149), 0, cheight / 2, Color(173, 41, 0), false)
val bg1 = fillColor(bgc1) * penColor(noColor) -> Picture.rectangle(cwidth, cheight / 2)
val bgc2 = cm.linearGradient(0, 0, Color(0, 102, 45), 0, cheight / 2, Color(204, 204, 204), false)
val bg2 = fillColor(bgc2) * penColor(noColor) -> Picture.rectangle(cwidth, cheight / 2)

val bg = picColCentered(bg2, bg1)

def building(n: Int) {
    repeat(2) {
        forward(n)
        right(90)
        forward(30)
        right(90)
    }
    right(90)
    hop(30)
    left(90)
}

def buildings = Picture {
    repeat(26) {
        building(random(40, 150))
    }
}

def chakra = penColor(ColorMaker.hsl(219, 0.93, 0.60)) -> Picture {
    left(-90)
    hop(25)
    left(90)
    circle(25)
    right(-90)
    forward(50)
    hop(-25)
    left(90)
    hop(25)
    right(180)
    forward(50)
    hop(-25)
    right(45)
    hop(25)
    right(180)
    forward(50)
    hop(-25)
    right(90)
    hop(25)
    right(180)
    forward(50)

}

def city = picStack(
    buildings.withFillColor(white)
        .withPenColor(ColorMaker.hsl(0, 0.00, 0.93))
        .thatsTranslated(0, cheight / 2 - 43),
    chakra
        .thatsTranslated(cwidth * 0.5 + 2.5, cheight * 0.5)
)

def f = Picture {
    setFillColor(ColorMaker.hsl(0, 0.17, 0.21))
    setPenColor(noColor)
    forward(60)
    left(90)
    forward(5)
    left(90)
    forward(60)
    left(90)
    forward(5)
    left(90)
    hop(60)
    right(90)
    setFillColor(cm.darkOrange)
    forward(40)
    right(90)
    forward(10)
    right(90)
    forward(40)
    right(180)
    setFillColor(white)
    forward(40)
    right(90)
    forward(10)
    right(90)
    forward(40)
    right(180)
    setFillColor(cm.green)
    forward(40)
    right(90)
    forward(10)
    right(90)
    forward(40)
    right(180)
}

val flag = picStack(
    f,
    chakra.thatsScaled(0.18).thatsTranslated(20, 45)
)

def text = Picture {
    setPenColor(white)
    write("Happy Republic Day!")
}

val pic = picStack(
    bg,
    city,
    flag.thatsScaled(0.5).thatsTranslated(197, 367),
    text.thatsScaled(2).thatsTranslated(cwidth / 2 - 183, 120)
)

draw(pic)