Draw Pikachu using Python turtle

spyrokp@gmail.com Avatar

Pikachu is a popular character from the Pokémon franchise, created by Nintendo. It first appeared in the original Pokémon video games released in Japan in 1996 and internationally in 1998. Pikachu is an electric-type Pokémon and is

one of the most recognizable and beloved Pokémon characters.

Pikachu is

depicted as a small, yellow, furry creature with red cheeks and long, pointed ears. It has a lightning bolt-shaped tail and can generate and control electricity. In the Pokémon games and anime, Pikachu is

often portrayed as the mascot and companion of the main character, Ash Ketchum.

Pikachu has become a cultural icon and has appeared in numerous video games, TV shows, movies, and merchandise. Its popularity has led to it being featured in various spin-off games and media, such as the popular mobile game Pokémon GO. Pikachu has also been the subject of scientific research due to its popularity and unique characteristics.

\"Draw

Draw Pikachu using Python turtle

import turtle

def getPosition(x, y):
turtle.setx(x)
turtle.sety(y)
print(x, y)

class Pikachu:

def __init__(self):
    self.t = turtle.Turtle()
    t = self.t
    t.pensize(3)
    t.speed(9)
    t.ondrag(getPosition)

def noTrace_goto(self, x, y):
    self.t.penup()
    self.t.goto(x, y)
    self.t.pendown()

def leftEye(self, x, y):
    self.noTrace_goto(x, y)
    t = self.t
    t.seth(0)
    t.fillcolor(\'#333333\')
    t.begin_fill()
    t.circle(22)
    t.end_fill()

    self.noTrace_goto(x, y + 10)
    t.fillcolor(\'#000000\')
    t.begin_fill()
    t.circle(10)
    t.end_fill()

    self.noTrace_goto(x + 6, y + 22)
    t.fillcolor(\'#ffffff\')
    t.begin_fill()
    t.circle(10)
    t.end_fill()

def rightEye(self, x, y):
    self.noTrace_goto(x, y)
    t = self.t
    t.seth(0)
    t.fillcolor(\'#333333\')
    t.begin_fill()
    t.circle(22)
    t.end_fill()

    self.noTrace_goto(x, y + 10)
    t.fillcolor(\'#000000\')
    t.begin_fill()
    t.circle(10)
    t.end_fill()

    self.noTrace_goto(x - 6, y + 22)
    t.fillcolor(\'#ffffff\')
    t.begin_fill()
    t.circle(10)
    t.end_fill()

def mouth(self, x, y):
    self.noTrace_goto(x, y)
    t = self.t

    t.fillcolor(\'#88141D\')
    t.begin_fill()

    # Lower Lip
    l1 = []
    l2 = []
    t.seth(190)
    a = 0.7
    for i in range(28):
        a += 0.1
        t.right(3)
        t.fd(a)
        l1.append(t.position())

    self.noTrace_goto(x, y)

    t.seth(10)
    a = 0.7
    for i in range(28):
        a += 0.1
        t.left(3)
        t.fd(a)
        l2.append(t.position())

    # Upper Lip
    t.seth(10)
    t.circle(50, 15)
    t.left(180)
    t.circle(-50, 15)

    t.circle(-50, 40)
    t.seth(233)
    t.circle(-50, 55)
    t.left(180)
    t.circle(50, 12.1)
    t.end_fill()

    # Tongue
    self.noTrace_goto(17, 54)
    t.fillcolor(\'#DD716F\')
    t.begin_fill()
    t.seth(145)
    t.circle(40, 86)
    t.penup()
    for pos in reversed(l1[:20]):
        t.goto(pos[0], pos[1] + 1.5)
    for pos in l2[:20]:
        t.goto(pos[0], pos[1] + 1.5)
    t.pendown()
    t.end_fill()

    # Nose
    self.noTrace_goto(-17, 94)
    t.seth(8)
    t.fd(4)
    t.back(8)

# Red Cheeks
def leftCheek(self, x, y):
    turtle.tracer(False)
    t = self.t
    self.noTrace_goto(x, y)
    t.seth(300)
    t.fillcolor(\'#DD4D28\')
    t.begin_fill()
    a = 2.3
    for i in range(120):
        if 0 <= i < 30 or 60 <= i < 90:
            a -= 0.05
            t.lt(3)
            t.fd(a)
        else:
            a += 0.05
            t.lt(3)
            t.fd(a)
    t.end_fill()
    turtle.tracer(True)

def rightCheek(self, x, y):
    t = self.t
    turtle.tracer(False)
    self.noTrace_goto(x, y)
    t.seth(60)
    t.fillcolor(\'#DD4D28\')
    t.begin_fill()
    a = 2.3
    for i in range(120):
        if 0 <= i < 30 or 60 <= i < 90:
            a -= 0.05
            t.lt(3)
            t.fd(a)
        else:
            a += 0.05
            t.lt(3)
            t.fd(a)
    t.end_fill()
    turtle.tracer(True)

def colorLeftEar(self, x, y):
    t = self.t
    self.noTrace_goto(x, y)
    t.fillcolor(\'#000000\')
    t.begin_fill()
    t.seth(330)
    t.circle(100, 35)
    t.seth(219)
    t.circle(-300, 19)
    t.seth(110)
    t.circle(-30, 50)
    t.circle(-300, 10)
    t.end_fill()

def colorRightEar(self, x, y):
    t = self.t
    self.noTrace_goto(x, y)
    t.fillcolor(\'#000000\')
    t.begin_fill()
    t.seth(300)
    t.circle(-100, 30)
    t.seth(35)
    t.circle(300, 15)
    t.circle(30, 50)
    t.seth(190)
    t.circle(300, 17)
    t.end_fill()

def body(self):
    t = self.t

    t.fillcolor(\'#F6D02F\')
    t.begin_fill()
    # Right face contour
    t.penup()
    t.circle(130, 40)
    t.pendown()
    t.circle(100, 105)
    t.left(180)
    t.circle(-100, 5)

    # Right ear
    t.seth(20)
    t.circle(300, 30)
    t.circle(30, 50)
    t.seth(190)
    t.circle(300, 36)

    # Upper profile
    t.seth(150)
    t.circle(150, 70)

    # Left ear
    t.seth(200)
    t.circle(300, 40)
    t.circle(30, 50)
    t.seth(20)
    t.circle(300, 35)
    #print(t.pos())

    # Left face contour
    t.seth(240)
    t.circle(105, 95)
    t.left(180)
    t.circle(-105, 5)

    # Left hand
    t.seth(210)
    t.circle(500, 18)
    t.seth(200)
    t.fd(10)
    t.seth(280)
    t.fd(7)
    t.seth(210)
    t.fd(10)
    t.seth(300)
    t.circle(10, 80)
    t.seth(220)
    t.fd(10)
    t.seth(300)
    t.circle(10, 80)
    t.seth(240)
    t.fd(12)
    t.seth(0)
    t.fd(13)
    t.seth(240)
    t.circle(10, 70)
    t.seth(10)
    t.circle(10, 70)
    t.seth(10)
    t.circle(300, 18)

    t.seth(75)
    t.circle(500, 8)
    t.left(180)
    t.circle(-500, 15)
    t.seth(250)
    t.circle(100, 65)

    # Left foot
    t.seth(320)
    t.circle(100, 5)
    t.left(180)
    t.circle(-100, 5)
    t.seth(220)
    t.circle(200, 20)
    t.circle(20, 70)

    t.seth(60)
    t.circle(-100, 20)
    t.left(180)
    t.circle(100, 20)
    t.seth(300)
    t.circle(10, 70)

    t.seth(60)
    t.circle(-100, 20)
    t.left(180)
    t.circle(100, 20)
    t.seth(10)
    t.circle(100, 60)

    # Horizontal
    t.seth(180)
    t.circle(-100, 10)
    t.left(180)
    t.circle(100, 10)
    t.seth(5)
    t.circle(100, 10)
    t.circle(-100, 40)
    t.circle(100, 35)
    t.left(180)
    t.circle(-100, 10)

    # Right foot
    t.seth(290)
    t.circle(100, 55)
    t.circle(10, 50)

    t.seth(120)
    t.circle(100, 20)
    t.left(180)
    t.circle(-100, 20)

    t.seth(0)
    t.circle(10, 50)

    t.seth(110)
    t.circle(100, 20)
    t.left(180)
    t.circle(-100, 20)

    t.seth(30)
    t.circle(20, 50)

    t.seth(100)
    t.circle(100, 40)

    # Right body contour
    t.seth(200)
    t.circle(-100, 5)
    t.left(180)
    t.circle(100, 5)
    t.left(30)
    t.circle(100, 75)
    t.right(15)
    t.circle(-300, 21)
    t.left(180)
    t.circle(300, 3)

    # Right hand
    t.seth(43)
    t.circle(200, 60)

    t.right(10)
    t.fd(10)

    t.circle(5, 160)
    t.seth(90)
    t.circle(5, 160)
    t.seth(90)

    t.fd(10)
    t.seth(90)
    t.circle(5, 180)
    t.fd(10)

    t.left(180)
    t.left(20)
    t.fd(10)
    t.circle(5, 170)
    t.fd(10)
    t.seth(240)
    t.circle(50, 30)

    t.end_fill()
    self.noTrace_goto(130, 125)
    t.seth(-20)
    t.fd(5)
    t.circle(-5, 160)
    t.fd(5)

    # Fingers
    self.noTrace_goto(166, 130)
    t.seth(-90)
    t.fd(3)
    t.circle(-4, 180)
    t.fd(3)
    t.seth(-90)
    t.fd(3)
    t.circle(-4, 180)
    t.fd(3)

    # Tail
    self.noTrace_goto(168, 134)
    t.fillcolor(\'#F6D02F\')
    t.begin_fill()
    t.seth(40)
    t.fd(200)
    t.seth(-80)
    t.fd(150)
    t.seth(210)
    t.fd(150)
    t.left(90)
    t.fd(100)
    t.right(95)
    t.fd(100)
    t.left(110)
    t.fd(70)
    t.right(110)
    t.fd(80)
    t.left(110)
    t.fd(30)
    t.right(110)
    t.fd(32)

    t.right(106)
    t.circle(100, 25)
    t.right(15)
    t.circle(-300, 2)
    #print(t.pos())
    t.seth(30)
    t.fd(40)
    t.left(100)
    t.fd(70)
    t.right(100)
    t.fd(80)
    t.left(100)
    t.fd(46)
    t.seth(66)
    t.circle(200, 38)
    t.right(10)
    t.fd(10)
    t.end_fill()

    # Tail Pattern
    t.fillcolor(\'#923E24\')
    self.noTrace_goto(126.82, -156.84)
    t.begin_fill()

    t.seth(30)
    t.fd(40)
    t.left(100)
    t.fd(40)
    t.pencolor(\'#923e24\')
    t.seth(-30)
    t.fd(30)
    t.left(140)
    t.fd(20)
    t.right(150)
    t.fd(20)
    t.left(150)
    t.fd(20)
    t.right(150)
    t.fd(20)
    t.left(130)
    t.fd(18)
    t.pencolor(\'#000000\')
    t.seth(-45)
    t.fd(67)
    t.right(110)
    t.fd(80)
    t.left(110)
    t.fd(30)
    t.right(110)
    t.fd(32)
    t.right(106)
    t.circle(100, 25)
    t.right(15)
    t.circle(-300, 2)
    t.end_fill()

    # Hat, Eye, Mouth, Cheek
    self.cap(-134.07, 147.81)
    self.mouth(-5, 25)
    self.leftCheek(-126, 32)
    self.rightCheek(107, 63)
    self.colorLeftEar(-250, 100)
    self.colorRightEar(140, 270)
    self.leftEye(-85, 90)
    self.rightEye(50, 110)
    t.hideturtle()

def cap(self, x, y):
    self.noTrace_goto(x, y)
    t = self.t
    t.fillcolor(\'#CD0000\')
    t.begin_fill()
    t.seth(200)
    t.circle(400, 7)
    t.left(180)
    t.circle(-400, 30)
    t.circle(30, 60)
    t.fd(50)
    t.circle(30, 45)
    t.fd(60)
    t.left(5)
    t.circle(30, 70)
    t.right(20)
    t.circle(200, 70)
    t.circle(30, 60)
    t.fd(70)
    #print(t.pos())
    t.right(35)
    t.fd(50)
    t.circle(8, 100)
    t.end_fill()
    self.noTrace_goto(-168.47, 185.52)
    t.seth(36)
    t.circle(-270, 54)
    t.left(180)
    t.circle(270, 27)
    t.circle(-80, 98)

    t.fillcolor(\'#444444\')
    t.begin_fill()
    t.left(180)
    t.circle(80, 197)
    t.left(58)
    t.circle(200, 45)
    t.end_fill()

    self.noTrace_goto(-58, 270)
    t.pencolor(\'#228B22\')
    t.dot(35)

    self.noTrace_goto(-30, 280)
    t.fillcolor(\'#228B22\')
    t.begin_fill()
    t.seth(100)
    t.circle(30, 180)
    t.seth(190)
    t.fd(15)
    t.seth(100)
    t.circle(-45, 180)
    t.right(90)
    t.fd(15)
    t.end_fill()
    t.pencolor(\'#000000\')

def start(self):
    self.body()

def main():
print(\’Painting the Pikachu… \’)
wn = turtle.Screen()
wn.setup(width=600, height=800)
pikachu = Pikachu()
pikachu.start()
turtle.mainloop()

if name == \’main\’:
main()