The Python code used to create this Shri Krishna artwork.
import turtle
import time
# ============================================================
# SHRI KRISHNA - MODIFIED TURTLE ART
# Same original drawing concept, with subtle structural changes
# ============================================================
wn = turtle.Screen()
wn.setup(768, 768)
wn.bgcolor("black")
wn.title("Shri Krishna - Modified Line Art")
wn.tracer(1, 8)
# ---------------- MAIN DRAWING ----------------
b = turtle.Turtle()
b.speed(2)
b.color("#FFD84D")
b.up()
# Slightly shifted starting position
b.seth(4)
b.fd(25)
b.seth(90)
b.fd(100)
b.pensize(5)
b.down()
# Forehead / upper contour - subtly reshaped
b.seth(12)
b.circle(-52, 24)
b.pensize(4)
b.circle(-52, 11)
b.pensize(3)
b.circle(-52, 6)
b.pensize(2)
b.circle(-52, 3)
b.up()
b.seth(180)
b.fd(37)
b.seth(-90)
b.fd(15)
b.down()
# Eye 1
b.seth(-44)
b.fd(6)
b.pensize(3)
b.fd(9)
b.pensize(4)
b.fd(5)
b.pensize(5)
b.circle(26, 60)
b.pensize(4)
b.seth(-50)
b.fd(4)
b.pensize(3)
b.fd(4)
b.pensize(2)
b.fd(3)
# Upper eye curve
b.up()
b.seth(47)
b.fd(61)
b.down()
b.circle(-102, 4)
b.pensize(3)
b.circle(-102, 8)
b.pensize(4)
b.circle(-102, 10)
b.pensize(5)
b.circle(-102, 12)
b.pensize(4)
b.circle(-102, 9)
b.pensize(3)
b.circle(-102, 6)
b.pensize(2)
b.circle(-102, 3)
# Eye 2
b.up()
b.seth(-137)
b.fd(101)
b.down()
b.seth(45)
b.fd(5)
b.pensize(3)
b.fd(6)
b.pensize(4)
b.fd(6)
b.seth(-4)
b.circle(118, 5)
b.pensize(5)
b.circle(118, 10)
b.pensize(6)
b.circle(118, 14)
b.pensize(5)
b.circle(118, 11)
b.pensize(4)
b.circle(118, 6)
b.pensize(3)
b.circle(118, 5)
b.pensize(2)
b.circle(118, 4)
# Bindi
b.up()
b.seth(174)
b.fd(140)
b.down()
b.pensize(7)
b.circle(2)
b.pensize(4)
# Nose / cheek
b.up()
b.seth(-92)
b.fd(117)
b.down()
b.seth(-123)
b.circle(16, 84)
b.fd(10)
b.pensize(3)
b.up()
b.seth(-114)
b.fd(23)
b.down()
b.seth(29)
b.fd(15)
b.circle(-9, 87)
b.seth(76)
b.circle(-9, 82)
b.circle(41, 47)
b.seth(-130)
b.circle(-66, 63)
# Small smile curve
b.up()
b.seth(-68)
b.fd(7)
b.down()
b.seth(-33)
b.circle(36, 78)
# Hair / crown-side structure
b.pensize(2)
b.up()
b.seth(148)
b.fd(101)
b.down()
b.seth(-66)
b.fd(11)
b.pensize(3)
b.fd(40)
b.circle(124, 35)
b.seth(1)
b.fd(28)
b.seth(28)
b.circle(218, 41)
b.pensize(2)
b.circle(218, 5)
# Curved hair lock
b.pensize(3)
b.up()
b.seth(-59)
b.fd(11)
b.down()
b.seth(-89)
b.fd(31)
b.seth(0)
b.circle(-26, 158)
b.pensize(4)
b.circle(-26, 102)
b.pensize(5)
b.circle(-26, 48)
b.pensize(4)
b.circle(-26, 37)
b.pensize(3)
b.circle(-26, 16)
# Second lock
b.pensize(3)
b.up()
b.seth(-9)
b.fd(41)
b.down()
b.seth(-89)
b.fd(15)
b.seth(0)
b.circle(-11, 158)
b.pensize(4)
b.circle(-11, 101)
b.pensize(5)
b.circle(-11, 48)
b.pensize(4)
b.circle(-11, 36)
b.pensize(3)
b.circle(-11, 16)
# Large outer hair contour
b.pensize(4)
b.up()
b.seth(145)
b.fd(312)
b.down()
b.seth(91)
b.circle(-122, 6)
b.pensize(3)
b.circle(-122, 39)
b.circle(-47, 51)
b.pensize(4)
b.circle(-47, 41)
b.fd(69)
b.seth(-37)
b.fd(51)
b.pensize(5)
b.circle(-77, 43)
b.fd(49)
b.circle(71, 47)
b.seth(-4)
b.pensize(4)
b.fd(21)
b.circle(-8, 81)
b.pensize(3)
b.fd(25)
b.circle(-61, 34)
b.pensize(2)
b.circle(-61, 10)
# Hair back fill shape
b.pensize(1)
b.up()
b.seth(-89)
b.fd(16)
b.seth(-178)
b.fd(210)
b.down()
b.pensize(7)
b.seth(79)
b.circle(31, 50)
b.pensize(4)
b.fd(19)
b.pensize(7)
b.seth(151)
b.circle(-51, 36)
b.pensize(6)
b.circle(-245, 13)
b.pensize(5)
b.circle(-245, 7)
b.pensize(4)
b.circle(-245, 4)
b.pensize(1)
b.up()
b.seth(57)
b.fd(237)
b.down()
b.pensize(4)
b.seth(-1)
b.circle(-102, 31)
b.pensize(6)
b.circle(-102, 30)
b.fd(80)
b.pensize(4)
b.fd(45)
# Crown outer silhouette
b.pensize(1)
b.up()
b.seth(132)
b.fd(101)
b.down()
b.seth(-77)
b.pensize(2)
b.circle(134, 5)
b.pensize(3)
b.circle(134, 10)
b.pensize(4)
b.circle(134, 20)
b.pensize(5)
b.circle(134, 19)
b.circle(-121, 21)
b.pensize(4)
b.circle(-121, 10)
b.pensize(3)
b.circle(-121, 8)
b.pensize(2)
b.circle(-121, 7)
# Crown decorative top
b.pensize(1)
b.up()
b.seth(143)
b.fd(366)
b.down()
b.begin_fill()
b.seth(46)
b.circle(-36, 91)
b.fd(69)
b.seth(-41)
b.fd(31)
b.circle(-81, 14)
b.fd(60)
b.seth(151)
b.circle(-218, 28)
b.seth(114)
b.circle(218, 20)
b.circle(2, 176)
b.circle(-151, 25)
b.circle(282, 27)
b.seth(137)
b.circle(-282, 26)
b.circle(282, 16)
b.circle(25, 65)
b.end_fill()
b.ht()
# ---------------- KRISHNA INNER DETAILS ----------------
c = turtle.Turtle()
c.speed(2)
c.color("#FFD84D")
c.up()
# Left eyebrow / eye
c.seth(164)
c.fd(199)
c.down()
c.pensize(4)
c.seth(149)
c.circle(71, 13)
c.pensize(5)
c.circle(71, 10)
c.pensize(6)
c.circle(71, 10)
c.pensize(7)
c.circle(71, 14)
c.pensize(5)
c.circle(71, 9)
c.pensize(3)
c.circle(71, 7)
c.pensize(2)
c.circle(71, 5)
# Left eyelid
c.up()
c.seth(-20)
c.fd(105)
c.down()
c.pensize(5)
c.seth(136)
c.fd(8)
c.pensize(4)
c.fd(5)
c.circle(8, 93)
c.circle(-38, 25)
c.pensize(5)
c.circle(-38, 20)
c.pensize(6)
c.circle(-38, 10)
c.pensize(7)
c.circle(-38, 10)
c.pensize(6)
c.circle(-38, 10)
c.pensize(4)
c.circle(-38, 10)
c.pensize(3)
c.fd(8)
c.pensize(2)
c.fd(7)
# Right eyebrow / eye
c.up()
c.seth(18)
c.fd(124)
c.down()
c.pensize(5)
c.seth(57)
c.circle(-82, 5)
c.pensize(6)
c.circle(-82, 10)
c.pensize(7)
c.circle(-82, 14)
c.pensize(8)
c.circle(-82, 15)
c.pensize(7)
c.circle(-82, 11)
c.pensize(6)
c.circle(-82, 8)
c.pensize(4)
c.circle(-82, 7)
c.pensize(3)
c.circle(-82, 5)
c.pensize(2)
c.circle(-82, 3)
# Right eyelid / cheek
c.up()
c.seth(-138)
c.fd(119)
c.down()
c.pensize(5)
c.seth(67)
c.fd(6)
c.pensize(4)
c.fd(3)
c.pensize(3)
c.fd(6)
c.circle(-12, 57)
c.pensize(4)
c.circle(-12, 20)
c.pensize(5)
c.circle(-12, 10)
c.pensize(6)
c.circle(46, 30)
c.pensize(7)
c.circle(46, 20)
c.pensize(6)
c.circle(46, 15)
c.pensize(4)
c.circle(46, 8)
c.pensize(3)
c.circle(46, 7)
c.fd(17)
# Bindi / forehead
c.pensize(4)
c.up()
c.seth(162)
c.fd(164)
c.down()
c.seth(-11)
c.fd(5)
c.seth(-44)
c.circle(-51, 30)
c.pensize(5)
c.circle(-51, 10)
c.pensize(6)
c.fd(15)
c.circle(46, 39)
c.circle(7, 138)
c.pensize(7)
c.fd(29)
c.pensize(5)
c.fd(21)
c.pensize(4)
c.fd(11)
# Nose
c.up()
c.seth(-88)
c.fd(168)
c.down()
c.circle(46, 40)
# Mouth
c.up()
c.seth(-119)
c.fd(31)
c.down()
c.seth(28)
c.fd(18)
c.circle(-9, 86)
c.seth(79)
c.circle(-10, 98)
c.circle(25, 80)
c.seth(-126)
c.circle(-67, 68)
c.up()
c.seth(-34)
c.fd(13)
c.down()
c.seth(-29)
c.circle(38, 84)
# ---------------- HEAD MASS ----------------
c.pensize(1)
c.up()
c.seth(150)
c.fd(271)
c.down()
c.begin_fill()
c.seth(128)
c.circle(-91, 43)
c.seth(46)
c.fd(117)
c.circle(-1, 165)
c.fd(75)
c.circle(25, 45)
c.seth(-110)
c.fd(50)
c.seth(-39)
c.fd(10)
c.seth(62)
c.fd(99)
c.circle(-186, 32)
c.circle(1, 175)
c.circle(201, 37)
c.circle(-2.5, 180)
c.fd(48)
c.seth(61)
c.circle(-181, 58)
c.seth(172)
c.circle(151, 60)
c.seth(-154)
c.circle(239, 33)
c.seth(-91)
c.circle(96, 43)
c.end_fill()
# Secondary head shapes
c.up()
c.seth(24)
c.fd(55)
c.down()
c.begin_fill()
c.seth(53)
c.circle(-405, 24)
c.seth(-164)
c.circle(201, 50)
c.end_fill()
c.up()
c.seth(39)
c.fd(149)
c.down()
c.begin_fill()
c.seth(3)
c.circle(-181, 20)
c.seth(132)
c.circle(56, 70)
c.end_fill()
c.up()
c.seth(10)
c.fd(153)
c.down()
c.begin_fill()
c.seth(-19)
c.circle(-51, 98)
c.seth(81)
c.circle(71, 65)
c.end_fill()
# ---------------- HAIR CURLS ----------------
def curl(t, size, direction, count=1):
t.pensize(3)
t.circle(direction * size, 45)
t.pensize(4)
t.circle(direction * size, 50)
t.pensize(5)
t.circle(direction * max(10, size//2), 75)
t.pensize(6)
t.circle(direction * max(16, size//2+4), 72)
t.circle(direction * max(10, size//3), 145)
t.pensize(4)
t.circle(direction * max(10, size//3), 60)
t.pensize(3)
t.circle(direction * max(10, size//3), 30)
t.pensize(2)
t.circle(direction * max(10, size//3), 20)
c.up()
c.seth(-90)
c.fd(81)
c.down()
c.seth(-34)
curl(c, 26, -1)
c.up()
c.seth(31)
c.fd(30)
c.down()
c.seth(23)
curl(c, 27, -1)
c.up()
c.seth(169)
c.fd(32)
c.down()
c.seth(-32)
c.pensize(3)
c.circle(-49, 45)
c.pensize(4)
c.circle(-49, 50)
c.pensize(5)
c.circle(-23, 88)
c.pensize(6)
c.circle(-31, 94)
c.circle(-21, 150)
c.pensize(5)
c.circle(-21, 60)
c.pensize(4)
c.circle(-21, 30)
c.pensize(3)
c.circle(-21, 20)
# Right hair
c.up()
c.seth(168)
c.fd(244)
c.down()
c.seth(-154)
curl(c, 26, 1)
c.up()
c.seth(166)
c.fd(24)
c.down()
c.seth(169)
curl(c, 27, 1)
c.up()
c.seth(21)
c.fd(31)
c.down()
c.seth(-147)
c.pensize(3)
c.circle(49, 40)
c.pensize(5)
c.circle(49, 50)
c.pensize(6)
c.circle(23, 90)
c.pensize(7)
c.circle(31, 94)
c.pensize(6)
c.circle(21, 150)
c.pensize(5)
c.circle(21, 60)
c.pensize(4)
c.circle(21, 30)
c.pensize(3)
c.circle(21, 20)
# ---------------- PEACOCK FEATHER ----------------
c.up()
c.seth(32)
c.fd(257)
c.down()
c.pensize(3)
c.seth(84)
c.circle(154, 26)
# Feather inner body
c.pensize(1)
c.up()
c.seth(-87)
c.fd(43)
c.down()
c.begin_fill()
c.seth(130)
c.circle(-76, 46)
c.circle(-13, 150)
c.circle(-86, 35)
c.seth(87)
c.circle(76, 35)
c.circle(6, 137)
c.circle(76, 40)
c.end_fill()
c.up()
c.seth(134)
c.fd(15)
c.down()
c.begin_fill()
c.seth(139)
c.circle(-66, 78)
c.circle(-20, 125)
c.circle(-86, 45)
c.seth(83)
c.circle(76, 33)
c.circle(15, 140)
c.circle(66, 47)
c.end_fill()
c.up()
c.seth(-109)
c.fd(5)
c.down()
c.begin_fill()
c.seth(139)
c.circle(-71, 70)
c.circle(-28, 145)
c.circle(-86, 27)
c.seth(53)
c.circle(51, 50)
c.circle(-31, 60)
c.seth(-139)
c.circle(51, 35)
c.seth(73)
c.circle(101, 36)
c.seth(-81)
c.circle(-71, 35)
c.seth(91)
c.circle(56, 50)
c.circle(-35, 65)
c.seth(-134)
c.circle(126, 70)
c.seth(139)
c.circle(-81, 50)
c.seth(-93)
c.circle(101, 70)
c.end_fill()
c.ht()
# ---------------- FLUTE / LOWER ORNAMENT ----------------
d = turtle.Turtle()
d.speed(2)
d.color("#FFD84D")
d.up()
d.seth(-157)
d.fd(295)
d.down()
d.pensize(3)
d.seth(-90)
d.begin_fill()
d.fd(18)
d.seth(-179)
d.fd(20)
d.seth(90)
d.fd(18)
d.seth(2)
d.fd(20)
d.end_fill()
# Long flute body
d.fd(550)
d.seth(-90)
d.fd(18)
d.seth(-179)
d.fd(550)
d.seth(90)
d.fd(18)
# Finger holes — spacing slightly altered
d.pensize(1)
d.seth(2)
for dist in [112, 92, 37, 36, 37]:
d.fd(dist)
d.seth(-50)
d.begin_fill()
d.circle(18, 103)
d.end_fill()
d.seth(2)
# lower border
d.fd(99)
d.seth(-90)
d.fd(18)
d.seth(-179)
d.fd(550)
d.seth(90)
d.fd(18)
d.seth(2)
d.fd(550)
# Decorative flute cap
d.seth(-90)
d.fd(1)
d.begin_fill()
d.seth(2)
d.fd(15)
d.seth(90)
d.fd(5)
d.circle(-7, 115)
d.fd(55)
d.seth(-161)
d.fd(55)
d.circle(-7, 115)
d.fd(5)
d.seth(-179)
d.fd(15)
d.end_fill()
# Final sweeping lower shape
d.pensize(5)
d.up()
d.seth(-90)
d.fd(1)
d.seth(-179)
d.fd(47)
d.down()
d.begin_fill()
d.seth(-109)
d.circle(-132, 90)
d.circle(505, 50)
d.seth(21)
d.circle(-405, 46)
d.circle(205, 101)
d.end_fill()
d.ht()
# ---------------- FINISH ----------------
wn.update()
time.sleep(2.0)
wn.mainloop()