Code Sketch
WORLD CANCER DAY - Army Public School Dighi
Category: Art
clear()
setSpeed(superFast)
zoom(0.1)
toggleFullScreenCanvas()
// ---------------- BACKGROUND ----------------
setBackground(new java.awt.Color(135, 206, 235))
// ---------------- 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(black)
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 4")
setPosition(150, 0)
setPenColor(black)
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("Avoid Alcohol and Cigrate")
left(90)
hop(600)
right(90)
write("Have a proper diet")
hop(-900)
write("Medicines")
invisible()