CREATE A PICKACHU WITH PYTHON
| 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() | |
| # 下嘴唇 | |
| 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()) | |
| # 上嘴唇 | |
| 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() | |
| # 舌头 | |
| 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() | |
| # 鼻子 | |
| self.noTrace_goto(-17, 94) | |
| t.seth(8) | |
| t.fd(4) | |
| t.back(8) | |
| # 红脸颊 | |
| 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() | |
| # 右脸轮廓 | |
| t.penup() | |
| t.circle(130, 40) | |
| t.pendown() | |
| t.circle(100, 105) | |
| t.left(180) | |
| t.circle(-100, 5) | |
| # 右耳朵 | |
| t.seth(20) | |
| t.circle(300, 30) | |
| t.circle(30, 50) | |
| t.seth(190) | |
| t.circle(300, 36) | |
| # 上轮廓 | |
| t.seth(150) | |
| t.circle(150, 70) | |
| # 左耳朵 | |
| t.seth(200) | |
| t.circle(300, 40) | |
| t.circle(30, 50) | |
| t.seth(20) | |
| t.circle(300, 35) | |
| #print(t.pos()) | |
| # 左脸轮廓 | |
| t.seth(240) | |
| t.circle(105, 95) | |
| t.left(180) | |
| t.circle(-105, 5) | |
| # 左手 | |
| 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) | |
| # 左脚 | |
| 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) | |
| # 横向 | |
| 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) | |
| # 右脚 | |
| 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) | |
| # 右侧身体轮廓 | |
| 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) | |
| # 右手 | |
| 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) | |
| # 手指纹 | |
| 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) | |
| # 尾巴 | |
| 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() | |
| # 尾巴花纹 | |
| 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() | |
| # 帽子、眼睛、嘴巴、脸颊 | |
| 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... ') | |
| turtle.screensize(800, 600) | |
| turtle.title('Pikachu') | |
| pikachu = Pikachu() | |
| pikachu.start() | |
| turtle.mainloop() | |
| if __name__ == '__main__': | |
| main() |
MYPROGRAMMINGWORLD2021
BY: ATUL SHARMA



0 Comments
if you have any doubts.Please let me know.