Code Sketch


DAY OF CANCER
By: shreyaSH
cleari()
setSpeed(superFast)
zoom(0.1)
toggleFullScreenCanvas()
// ---------------- BACKGROUND ----------------
setBackgroundH(red, yellow)

// ---------------- CIRCLE BORDER ----------------
setPenThickness(5)
setSpeed(fast)

penUp()
moveTo(0, -100)
setHeading(0)
penDown()

// Main circle
setPenColor(white)
setPenThickness(3)
circle(100)

// Decorative dots
setPenColor(pink)
setPenThickness(4)

var angle = 0
while (angle < 360) {

  penUp()
  moveTo(0, 0)
  setHeading(angle)
  forward(115)
  penDown()

  circle(3)

  angle = angle + 10
}

// Outer thin ring
penUp()
moveTo(0, 115)
left(50)
penDown()
setPenColor(lightGray)
setPenThickness(2)
circle(115)

// ---------------- TEXT ----------------

penUp()
moveTo(-90, -10)
penDown()
setPenColor(red)
setPenFontSize(30)
setPosition(-115, 50)
setPenColor(black)
right(145)
write("WORLD CANCER")
hop(-50)
right(90)
left(90)
setPosition(-25, -50)
hop(60)
write("DAY")

setPosition(-50, 9)
setPenFontSize(90)
setPenColor(pink)
write("?")
setPenColor(black)
hop(-200)
setPosition(-125,-158)
setPenFontSize(60)
write("February 16 ")


setPosition(150, 0)
setPenColor(red)
right(45)

def line {
setPenThickness(5)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
right(90,10)
left(90,10)
}
line



setPosition(-150,0)
right(180)
line

setPosition(0,150)
right(90)
line


setPosition(420, 420)
setPenColor(red)
setPenThickness(15)
circle(170)
left(40)
hop(210)
left(90)
hop(225)
left(185)
setPenColor(brown)
setFillColor(brown)
forward(100)
right(90)
hop(18)
left(90)
hop(9)
right(-90)
arc(20, 45)
right(90)
hop(9)
right(135)
hop(20)
left(90)
forward(70)
right(90)
forward(10)
right(90)
hop(180)
right(-90)
hop(-20)
forward(40)
left(90)
forward(100)
hop(-5)
arc(20,55)
right(55)
forward(70)
left(90)
forward(5)
setFillColor(noColor)
setPosition(275, 400)
setPenFontSize(150)
right(90)






// 1. Function for the cigarette parts
def drawSegment(width: Double, height: Double, col: Color) {
    setPenColor(noColor)
    setFillColor(col)
    repeat(2) {
        forward(height)
        right(90)
        forward(width)
        right(90)
    }
}

// Set the starting point as requested
val startX = 275
val startY = 300

// --- THE CIGARETTE ---
jumpTo(startX, startY)
drawSegment(40, 20, orange)    // Filter

jumpTo(startX + 40, startY)
drawSegment(120, 20, white)    // Body

// The Burning Tip (Ember)
jumpTo(startX + 160, startY)
drawSegment(5, 20, red)        

// The Ash
jumpTo(startX + 165, startY)
drawSegment(12, 20, darkGray)

// --- THE EMOJI SMOKE WISPS ---
def drawEmojiWisp(x: Double, y: Double, scale: Double) {
    jumpTo(x, y)
    setHeading(15) // Slight upward tilt
    
    var alpha = 170
    var thickness = 2.0 * scale
    
    repeat(25) {
        setPenColor(Color(240, 240, 240, alpha))
        setPenThickness(thickness)
        forward(2 * scale)
        left(7) // Smooth "C" curve
        
        alpha = (alpha * 0.94).toInt
        thickness = thickness + 0.1
    }
}

// 2. Generate the wisps starting from the tip (startX + 170)
drawEmojiWisp(startX + 170, startY + 25, 1.0)  // Low wisp
drawEmojiWisp(startX + 175, startY + 65, 1.5)  // Middle wisp
drawEmojiWisp(startX + 185, startY + 110, 2.2) // High fading wisp

setPenThickness(15)
setPenColor(red)
setPosition(420, 420)
left(40)
forward(330)




def drawSaladBowl(x: Double, y: Double) {
    // 1. COLORS
    val limeColor = Color(150, 255, 0)
    val leafGreen = Color(34, 139, 34)
    val bowlColor = Color(240, 240, 240)
    val rimColor = Color(200, 200, 200)

    // --- 2. POSITION MARKER (For Identification) ---
    // This draws a small blue cross at the exact (x,y) point
    setPenColor(blue)
    setPenThickness(1)
    jumpTo(x - 10, y); forward(20)      // Horizontal line
    jumpTo(x, y - 10); setHeading(0); forward(20) // Vertical line
    jumpTo(x + 5, y + 15)

    // --- 3. THE BOWL ---
    // Shadow
    jumpTo(x + 4, y - 4)
    setHeading(180)
    setFillColor(Color(200, 200, 200))
    setPenColor(noColor)
    repeat(180) { forward(1.55); left(1) }

    // Main Body
    jumpTo(x, y)
    setHeading(180) 
    setPenColor(black); setPenThickness(2); setFillColor(bowlColor)
    repeat(180) { forward(1.5); left(1) }
    
    // 3D Rim (Oval top)
    jumpTo(x, y)
    setHeading(90)
    setFillColor(rimColor)
    // Drawing a thin ellipse for the rim
    repeat(2) {
        repeat(90) { forward(0.2); right(1) }
        repeat(90) { forward(1.7); right(1) }
    }

    // --- 4. THE SALAD ---
    def drawLeaf(lx: Double, ly: Double, col: Color) {
        jumpTo(lx, ly)
        setPenColor(noColor); setFillColor(col)
        repeat(6) { forward(18); right(60) }
    }

    // Better clustered leaves
    drawLeaf(x + 35, y - 40, leafGreen)
    drawLeaf(x + 75, y - 55, limeColor)
    drawLeaf(x + 110, y - 45, leafGreen)
    drawLeaf(x + 60, y - 30, limeColor)

    def drawTopping(tx: Double, ty: Double, col: Color, size: Double) {
        jumpTo(tx, ty)
        setPenColor(noColor); setFillColor(col)
        repeat(36) { forward(size); right(10) }
    }

    // Toppings placed "inside" the leaves
    drawTopping(x + 50, y - 60, red, 1.2)    // Tomato
    drawTopping(x + 115, y - 70, orange, 0.8) // Carrot
    drawTopping(x + 85, y - 35, red, 1.0)     // Tomato
}

// --- EXECUTION ---
// Your requested position
drawSaladBowl(-300, 400)




// 1. Go to your position
jumpTo(-420, 300)

// 2. Set the style
setPenColor(green)
setPenThickness(15)
setFillColor(noColor) // Makes it "empty"

// 3. Draw the circle (Simple loop)
repeat(360) {
    forward(3) // Increase this number to make the circle bigger
    right(1)
}


case class Ribbon(name: String, col: Color)

val ribbons = List(
    Ribbon("Breast", Color(255, 105, 180)),    
    Ribbon("Lung", Color(128, 128, 128)),      
    Ribbon("Prostate", Color(30, 144, 255)),   
    Ribbon("Leukemia", orange),                
    Ribbon("Childhood", yellow),               
    Ribbon("Pancreatic", Color(148, 0, 211)),  
    Ribbon("Colorectal", green),               
    Ribbon("Ovarian", Color(0, 128, 128))      
)

def drawProperCircle(centerX: Double, centerY: Double, radius: Double) {
    val totalRibbons = ribbons.length
    val angleStep = 360.0 / totalRibbons
    var currentAngle = 0.0

    ribbons.foreach { r =>
        val rad = currentAngle * (math.Pi / 180)
        
        // Math for the circular path
        val rx = centerX + radius * math.cos(rad)
        val ry = centerY + radius * math.sin(rad)

        // Combine ribbon and name (on its side)
        val combinedPic = penColor(r.col) -> Picture {
            write(s"?${r.name}") 
        }
        
        combinedPic.scale(1.5) // Kept small and sharp
        
        // Position centering adjustment
        combinedPic.translate(rx - 25, ry)
        
        combinedPic.draw()
        currentAngle += angleStep
    }
}

// --- EXECUTION (Set your position here) ---
// Change 0, 0 to move the whole circle
// Example: drawProperCircle(200, 150, 100)
val posX = 0
val posY = -300
val size = 100 // The radius of the circle

drawProperCircle(posX, posY, size)
setPenColor(pink)
setFillColor(white)
setPenThickness(5)
setPosition(245, -470)
circle(220)

setPosition(-500, -150)

setFillColor(Color(188, 172, 172, 153))
setPenColor(white)

left(15)
hop(45)
left(25)
forward(20)
right(120,7)
right(60)
forward(20)
right(122,7)
right(60)
hop(50)
right(180,15)
right(180,15)
right()
setPenThickness(2)
forward(30)
left()
hop(25)
left()
forward(20)
right(120,7)
right(60)
forward(20)
right(122,7)
setPosition(-500, -150)
turnNorth()
forward(20)
right(120,7)
right(60)
forward(20)
right(122,7)
right(60)
hop(50)
right(180,15)
right(180,15)
right()
setPenThickness(2)
forward(30)
left()
hop(25)
left()
forward(20)
right(120,7)
right(60)
forward(20)
right(122,7)
setPosition(-500, -150)
turnEast()
forward(20)
right(120,7)
right(60)
forward(20)
right(122,7)
right(60)
hop(50)
right(180,15)
right(180,15)
right()
setPenThickness(2)
forward(30)
left()
hop(25)
left()
forward(20)
right(120,7)
right(60)
forward(20)
right(122,7)





setFillColor(noColor)

setPenThickness(1)
right(90,08)

setPenThickness(2)

setPosition(-200,-250)
turnEast()
setPenColor(Color(225, 219, 219, 173))
turnWest()
forward(25)
setPenThickness(10)
forward(5)
left()
setPenThickness(7)
forward(10)
right()
forward(200)
left()
forward(20)
right(180)
forward(60)
right(180)
forward(20)
left()
forward(200)
right()
forward(20)
right()
hop(200)
right()
forward(10)
left()
setPenThickness(15)
forward(50)
left()
forward(10)
right(180)
forward(20)
right(180)
forward(10)
left()
forward(150)
hop(10)
left()
hop(5)
setPenThickness(2)
forward(-10)
setPenThickness(1)
right()
hop(3)
left()
hop(2)
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
hop(8)
setPenThickness(2)
forward(-10)
setPenThickness(1)
right()
hop(3)
left()
hop(2)
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
hop(8)
setPenThickness(2)
forward(-10)
setPenThickness(1)
right()
hop(3)
left()
hop(2)
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
hop(8)
setPenThickness(2)
forward(-10)
setPenThickness(1)
right()
hop(3)
left()
hop(2)
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
hop(8)
setPenThickness(2)
forward(-10)
setPenThickness(1)
right()
hop(3)
left()
hop(2)
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
hop(8)
setPenThickness(2)
forward(-10)
setPenThickness(1)
right()
hop(3)
left()
hop(2)
forward(7)
right()
hop(3)
left()
forward(-7)
right()
hop(3)
left()
forward(7)
setPosition(-155,90)
left(75)
setPenThickness(2)



setPosition(-250, -150)
setPenColor(Color(255, 255, 255, 234))
forward(80)
right(30,40)
left(25)
forward(40)
repeat(10) {
    right(35,09)
    
}
right()
hop(18)

right()
forward(40)
left(25)
right(30,40)
forward(80)
repeat(9) {
right(20,18)
}
hop(40)

right()
hop(08)
right()
forward(30)
setPenThickness(2)
left(89,15)
left(-89,15)
hop(30)
right(95,20)
setPosition(-250,330)
setPenThickness(4)

val lightPurple = Color(200, 160, 255)

setPosition(350,150)
setPenFontSize(500)
setPenColor(lightPurple)
left(10)
write("??")


setPosition(150,550)
left(10)
setPenFontSize(50)
setPenColor(black)
write("just say noo!!!to Alcohol and Cigrate")

left(90)
hop(600)
right(90)
write("Have a proper food")

hop(-900)
write("Medicines")