Python Turtle绘图:重现汤姆劈树的经典瞬间
- [🦀 前言 🦀](#🦀 前言 🦀)
- 🐞往期绘画🐞
- [🐋 效果图 🐋](#🐋 效果图 🐋)
- [🐉 代码 🐉](#🐉 代码 🐉)
🦀 前言 🦀
《汤姆与杰瑞》(Tom and Jerry)是我们小时候经常看的一部经典的动画作品。自播出以来就受到了广大观众的喜爱和追捧。它不仅成为了一部经典的动画作品,还衍生出了众多周边产品和续集作品。该动画获得了七项奥斯卡大奖,成为了华纳旗下当之无愧的看家明星。
其中
汤姆飞行劈树
的画面记忆犹新,让我们使用Python的turtle库来绘画出经典名场面。
🐞往期绘画🐞
🐋 效果图 🐋
🐉 代码 🐉
python
# coding=gbk
import turtle
def plotLine(points, pencolor=None, width=None, speed=None):
'''
功能:画折线
参数:
- points : 一系列点,用列表或元组表示
- pencolor : 画笔颜色,默认不变
- width : 画笔宽度,默认不变
- speed : 绘制速度,默认不变
'''
# 记录旧参数
oldpencolor = turtle.pencolor()
oldwidth = turtle.width()
oldspeed = turtle.speed()
# 修改新参数
if pencolor is not None:
turtle.pencolor(pencolor)
if width is not None:
turtle.width(width)
if speed is not None:
turtle.speed(speed)
# 绘制折线
turtle.up()
turtle.goto(points[0])
turtle.down()
for point in points[1:]:
turtle.goto(point)
# 恢复旧参数
turtle.pencolor(oldpencolor)
turtle.width(oldwidth)
turtle.speed(oldspeed)
def plotPoly(points, fill=False, pencolor=None, fillcolor=None,
width=None, speed=None):
'''
功能:绘制封闭多边形
'''
# 保存旧参数
oldfillcolor = turtle.fillcolor()
# 更新新参数
if fillcolor is not None:
turtle.fillcolor(fillcolor)
# 绘制封闭多边形
points_plotline = list(points) + [points[0]]
if fill:
turtle.begin_fill()
plotLine(points_plotline, pencolor, width, speed)
turtle.end_fill()
else:
plotLine(points_plotline, pencolor, width, speed)
# 恢复旧参数
turtle.fillcolor(oldfillcolor)
# 设置一些参数
turtle.setup(723, 540, 100, 80)
turtle.shape('turtle')
turtle.bgcolor((0.45, 0.61, 0.85))
turtle.turtlesize(1.5, 1.5, 1.5)
# 树轮廓
points = [
(-38, 273), (-36, 264), (-33, 248), (-30, 232), (-27, 215),
(-25, 201), (-22, 181), (-16, 152), (-11, 128), (-7, 105),
(-4, 88), (0, 67), (8, 32), (15, -3), (19, -22),
(21, 42), (30, 104), (39, 155), (49, 196), (55, 227),
(63, 255), (68, 273), (150, 274), (147, 260), (139, 223),
(124, 173), (107, 122), (106, 114), (102, 107), (94, 61),
(87, 23), (83, -3), (80, -35), (79, -62), (77, -92),
(80, -155), (79, -206), (78, -244), (80, -275), (-49, -279),
(-50, -266), (-50, -258), (-47, -259), (-44, -264), (-47, -259),
(-54, -256), (-63, -251), (-74, -245), (-73, -242), (-71, -240),
(-72, -236), (-73, -234), (-73, -233), (-71, -233), (-69, -232),
(-68, -231), (-67, -228), (-67, -224), (-68, -221), (-69, -219),
(-70, -218), (-69, -217), (-67, -216), (-65, -215), (-64, -214),
(-64, -212), (-65, -207), (-67, -203), (-69, -199), (-71, -196),
(-71, -194), (-69, -194), (-63, -196), (-58, -200), (-51, -206),
(-48, -207), (-47, -190), (-47, -168), (-47, -148), (-47, -121),
(-47, -100), (-48, -90), (-50, -69), (-52, -43), (-53, -18),
(-55, 6), (-59, 33), (-61, 54), (-65, 73), (-68, 93),
(-70, 107), (-76, 133), (-77, 141), (-89, 194), (-97, 227),
(-105, 257), (-110, 273),
]
plotPoly(points, True, pencolor=(0.19, 0.18, 0.13),
fillcolor=(0.55, 0.36, 0.27), width=2)
# 树干
points = [
(-68, 258), (-66, 250), (-65, 243), (-64, 233), (-63, 226),
(-63, 221), (-61, 218), (-60, 215), (-60, 211), (-59, 201),
(-57, 192), (-55, 176), (-53, 165), (-51, 147), (-49, 137),
(-47, 116), (-46, 112), (-45, 109), (-44, 100), (-42, 86),
(-40, 70), (-38, 44), (-34, 24), (-31, 8), (-27, -11),
(-22, -29), (-17, -47), (-15, -65), (-13, -83), (-12, -104),
(-11, -123), (-12, -132), (-11, -161), (-10, -163), (-9, -170),
(-9, -192), (-8, -212), (-8, -242), (-8, -264), (-8, -271),
(-49, -271), (-48, -268), (-47, -263), (-45, -264), (-42, -265),
(-41, -264), (-41, -262), (-45, -259), (-50, -255), (-53, -253),
(-56, -252), (-61, -250), (-66, -247), (-70, -245), (-72, -244),
(-72, -242), (-70, -242), (-69, -241), (-70, -237), (-70, -234),
(-69, -233), (-66, -232), (-66, -229), (-66, -223), (-67, -218),
(-66, -216), (-64, -216), (-62, -213), (-63, -211), (-64, -207),
(-66, -204), (-66, -201), (-63, -201), (-61, -203), (-59, -206),
(-56, -207), (-53, -207), (-49, -209), (-47, -209), (-46, -206),
(-45, -184), (-45, -155), (-45, -124), (-45, -95), (-47, -78),
(-48, -53), (-50, -34), (-52, -7), (-56, 24), (-59, 49),
(-59, 60), (-60, 63), (-64, 77), (-67, 97), (-67, 108),
(-71, 121), (-75, 136), (-78, 154), (-82, 173), (-88, 194),
(-93, 219), (-98, 238), (-103, 255), (-107, 270), (-109, 272),
(-73, 272), (-70, 263),
]
plotPoly(points, True, pencolor=(0.51, 0.33, 0.25),
fillcolor=(0.47, 0.29, 0.24), width=2)
# 身子
points = [
(46, 246), (44, 230), (43, 215), (42, 205), (43, 196),
(44, 192), (46, 191), (48, 191), (54, 198), (61, 216),
(59, 201), (58, 196), (59, 193), (61, 192), (65, 195),
(73, 209), (68, 196), (68, 194), (70, 194), (71, 194),
(69, 189), (68, 185), (69, 184), (67, 181), (70, 183),
(78, 196), (85, 206), (90, 214), (96, 222), (99, 225),
(102, 224), (100, 217), (100, 210), (99, 200), (99, 196),
(101, 183), (102, 176), (102, 168), (100, 162), (97, 157),
(94, 153), (92, 152), (95, 150), (105, 149), (119, 150),
(136, 153), (142, 152), (148, 150), (153, 146), (157, 140),
(162, 135), (167, 128), (172, 121), (175, 116), (177, 115),
(175, 112), (172, 111), (171, 109), (170, 107), (164, 106),
(157, 113), (151, 117), (144, 122), (138, 124), (135, 124),
(132, 124), (129, 126), (127, 128), (126, 129), (109, 126),
(101, 122), (93, 119), (86, 114), (82, 113), (76, 90),
(72, 66), (69, 50), (67, 37), (64, 15), (61, -1),
(59, -9), (60, -30), (62, -45), (66, -60), (71, -77),
(79, -98), (86, -117), (91, -130), (89, -132), (88, -137),
(86, -139), (86, -144), (83, -146), (81, -152), (79, -153),
(77, -145), (69, -130), (61, -112), (51, -92), (39, -68),
(30, -51), (26, -45), (22, -32), (15, -4), (7, 38),
(-2, 80), (-4, 88), (2, 99), (8, 113), (12, 120),
(15, 125), (19, 126), (17, 129), (10, 131), (3, 137),
(-4, 139), (-11, 139), (-13, 139), (-20, 164), (-8, 163),
(3, 164), (8, 164), (12, 164), (16, 163), (18, 163),
(21, 164), (21, 172), (22, 175), (26, 179), (30, 184),
(32, 193), (35, 204), (39, 217), (44, 232),
]
plotPoly(points, True, pencolor=(0.06, 0.12, 0.31),
fillcolor=(0.34, 0.32, 0.39), width=2)
# 左手
points = [
(163, 106), (164, 101), (165, 98), (165, 96), (162, 93),
(159, 90), (159, 86), (162, 83), (164, 82), (169, 82),
(172, 86), (175, 91), (185, 91), (189, 89), (193, 87),
(197, 84), (201, 81), (207, 79), (216, 79), (222, 79),
(225, 80), (225, 82), (225, 86), (225, 88), (227, 88),
(228, 89), (230, 92), (228, 97), (227, 100), (222, 103),
(217, 105), (203, 106), (197, 107), (191, 110), (186, 112),
(181, 113), (176, 115), (174, 112), (172, 111), (170, 111),
(170, 108), (170, 107), (164, 107),
]
plotPoly(points, True, pencolor=(0.06, 0.12, 0.31),
fillcolor=(0.96, 0.93, 0.95), width=2)
# 左手
points = [
(187, 95), (179, 95), (175, 95), (174, 93), (174, 89),
(173, 87),
]
plotLine(points, pencolor=(0.06, 0.12, 0.11), width=2)
# 左手
points = [
(206, 89), (214, 80), (217, 79),
]
plotLine(points, pencolor=(0.06, 0.12, 0.11), width=2)
#
points = [
(213, 91), (219, 88), (224, 87),
]
plotLine(points, pencolor=(0.09, 0.1, 0.2), width=2)
# 左脚
points = [
(92, -129), (98, -115), (110, -97), (117, -89), (123, -86),
(129, -86), (134, -89), (142, -88), (146, -91), (147, -95),
(147, -102), (145, -106), (148, -108), (149, -112), (150, -118),
(148, -122), (145, -125), (141, -127), (137, -127), (134, -125),
(132, -123), (134, -125), (130, -127), (124, -132), (115, -143),
(109, -151), (104, -158), (99, -163), (96, -166), (92, -168),
(86, -168), (83, -165), (81, -162), (81, -158), (81, -153),
(81, -147), (82, -145), (86, -144), (85, -139), (86, -137),
(88, -137), (88, -132), (90, -131),
]
plotPoly(points, True, pencolor=(0.13, 0.13, 0.14),
fillcolor=(0.96, 0.93, 0.95), width=2)
# 左脚
points = [
(100, -163), (97, -163), (94, -163), (92, -160), (92, -150),
(96, -142), (100, -134), (104, -127), (108, -121), (111, -117),
(113, -115), (117, -112), (121, -110), (124, -110), (127, -112),
(128, -113), (128, -122), (126, -127), (125, -131), (123, -133),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
# 左脚
points = [
(118, -106), (121, -109), (124, -109), (128, -107), (131, -104),
(133, -99), (134, -95), (133, -91), (132, -88),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
# 左脚
points = [
(132, -110), (135, -111), (138, -111), (141, -109), (144, -106),
(147, -104),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
# 右腿
points = [
(-52, -46), (-58, -53), (-63, -62), (-71, -73), (-79, -85),
(-84, -93), (-85, -96), (-87, -96), (-86, -107), (-85, -118),
(-84, -125), (-79, -119), (-71, -109), (-63, -101), (-55, -94),
(-49, -90), (-49, -78), (-51, -61),
]
plotPoly(points, True, pencolor=(0.13, 0.13, 0.14),
fillcolor=(0.34, 0.33, 0.39), width=2)
# 右脚
points = [
(-113, -45), (-108, -44), (-104, -45), (-100, -48), (-97, -53),
(-94, -65), (-90, -80), (-87, -94), (-85, -110), (-85, -125),
(-87, -132), (-90, -136), (-92, -137), (-96, -138), (-99, -137),
(-102, -135), (-105, -131), (-110, -125), (-116, -112), (-121, -95),
(-123, -86), (-125, -80), (-127, -76), (-129, -77), (-135, -77),
(-139, -75), (-142, -72), (-143, -67), (-142, -61), (-139, -58),
(-137, -57), (-133, -57), (-134, -55), (-133, -52), (-132, -49),
(-129, -46), (-125, -44), (-122, -43), (-117, -43), (-114, -44),
]
plotPoly(points, True, pencolor=(0.13, 0.13, 0.14),
fillcolor=(0.96, 0.93, 0.95), width=2)
# 右脚
points = [
(-103, -64), (-106, -65), (-109, -65), (-112, -63), (-115, -60),
(-117, -56), (-117, -51), (-115, -49), (-114, -47), (-112, -45),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
# 右脚
points = [
(-122, -64), (-126, -64), (-130, -62), (-132, -59), (-134, -56),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
# 右脚
points = [
(-124, -83), (-123, -78), (-121, -73), (-119, -71), (-117, -70),
(-113, -71), (-111, -73), (-107, -81), (-103, -90), (-100, -101),
(-98, -110), (-96, -120), (-95, -126), (-95, -131), (-96, -134),
(-97, -136), (-99, -136), (-101, -136),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
# 右手
points = [
(-76, 133), (-72, 119), (-69, 104), (-71, 103), (-77, 103),
(-81, 107), (-83, 108), (-86, 108), (-90, 105), (-93, 104),
(-96, 103), (-97, 104), (-98, 105), (-100, 102), (-101, 101),
(-103, 99), (-105, 98), (-108, 97), (-111, 96), (-114, 96),
(-116, 97),
(-117, 95), (-126, 96), (-129, 98), (-131, 100),
(-131, 105), (-128, 107), (-123, 112), (-120, 116), (-116, 119),
(-117, 121), (-119, 123), (-121, 125), (-126, 126), (-130, 128),
(-133, 131), (-133, 134), (-131, 137), (-128, 139), (-124, 140),
(-119, 140), (-115, 140), (-111, 139), (-109, 137), (-105, 135),
(-104, 133), (-102, 135), (-96, 136), (-90, 136), (-85, 135),
(-79, 133),
]
plotPoly(points, True, pencolor=(0.13, 0.13, 0.14),
fillcolor=(0.96, 0.93, 0.95), width=2)
# 右手
points = [
(-94, 113), (-96, 108), (-98, 104),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
#plotPoly(points, True, pencolor=(0.13, 0.13, 0.14),
# fillcolor=(0.96, 0.93, 0.95), width=2)
# 右手
points = [
(-103, 118), (-109, 115), (-114, 111), (-116, 106), (-118, 102),
(-119, 98),
]
plotLine(points, pencolor=(0.13, 0.13, 0.14), width=2)
#plotPoly(points, True, pencolor=(0.13, 0.13, 0.14),
# fillcolor=(0.96, 0.93, 0.95), width=2)
# 树里面颜色
points = [
(64, 261), (60, 243), (55, 226), (52, 211), (51, 202),
(49, 195), (48, 191), (50, 191), (55, 199), (58, 208),
(61, 215), (59, 205), (59, 199), (59, 195), (59, 193),
(61, 192), (63, 193), (67, 197), (73, 209), (74, 208),
(70, 197), (69, 195), (71, 194), (71, 193), (70, 190),
(69, 187), (69, 185), (72, 185), (77, 193), (84, 204),
(89, 212), (92, 217), (95, 220), (99, 224), (100, 225),
(102, 225), (101, 219), (100, 213), (100, 209), (101, 207),
(104, 214), (106, 229), (109, 238), (112, 254), (115, 264),
(117, 273), (67, 273), (65, 265),
]
plotPoly(points, True, pencolor=(0.13, 0.13, 0.14),
fillcolor=(0.88, 0.77, 0.58), width=2)
# 汤姆肚子颜色
points = [
(-1, 79), (4, 90), (8, 99), (12, 104), (14, 107),
(17, 109), (20, 109), (22, 107), (24, 103), (24, 101),
(26, 98), (28, 98), (31, 98), (34, 101), (37, 103),
(39, 104), (43, 104), (44, 102), (47, 100), (48, 92),
(46, 85), (43, 75), (41, 69), (39, 64), (38, 53),
(37, 40), (36, 24), (35, 5), (35, -8), (36, -9),
(37, -11), (37, -13), (38, -14), (38, -17), (37, -20),
(35, -22), (32, -24), (29, -27), (26, -28), (24, -28),
(22, -25), (21, -20), (16, 0), (12, 18), (9, 34),
(5, 52), (2, 67),
]
plotPoly(points, True, pencolor=(0.59, 0.52, 0.55),
fillcolor=(0.59, 0.52, 0.55), width=1)
#
points = [
(72, 102), (74, 105), (77, 108), (81, 111),
]
plotLine(points, pencolor=(0.11, 0.05, 0.11), width=2)
# 树叶
points = [
(-65, -213), (-67, -206), (-71, -200), (-75, -194), (-78, -190),
(-82, -189), (-84, -188), (-90, -183), (-97, -179), (-105, -176),
(-118, -172), (-129, -169), (-138, -167), (-146, -165), (-152, -163),
(-159, -157), (-170, -153), (-179, -150), (-192, -146), (-217, -146),
(-229, -147), (-252, -148), (-256, -147), (-260, -142), (-266, -138),
(-271, -134), (-277, -131), (-289, -127), (-298, -125), (-307, -124),
(-328, -124), (-335, -125), (-344, -129), (-350, -131), (-357, -137),
(-361, -140), (-362, -145), (-362, -211), (-354, -211), (-353, -213),
(-355, -216), (-357, -220), (-358, -223), (-359, -229), (-359, -233),
(-356, -237), (-353, -241), (-349, -242), (-341, -242), (-336, -240),
(-331, -237), (-326, -233), (-322, -230), (-316, -231), (-314, -233),
(-316, -236), (-319, -242), (-321, -245), (-322, -247), (-321, -253),
(-317, -257), (-313, -258), (-307, -257), (-301, -254), (-295, -249),
(-290, -244), (-287, -240), (-286, -238), (-284, -238), (-282, -242),
(-279, -246), (-276, -248), (-272, -248), (-268, -246), (-262, -240),
(-257, -234), (-253, -229), (-250, -225), (-244, -225), (-242, -227),
(-241, -229), (-242, -232), (-245, -236), (-247, -239), (-247, -242),
(-244, -244), (-241, -242), (-238, -240), (-236, -239), (-232, -239),
(-233, -242), (-236, -248), (-238, -253), (-239, -259), (-239, -266),
(-236, -269), (-235, -271), (-219, -271), (-214, -265), (-208, -258),
(-202, -252), (-200, -248), (-199, -246), (-191, -246), (-190, -248),
(-192, -250), (-193, -253), (-193, -257), (-192, -262), (-190, -265),
(-184, -265), (-182, -265), (-182, -267), (-183, -269), (-183, -271),
(-154, -271), (-154, -268), (-154, -265), (-153, -263), (-144, -263),
(-141, -261), (-137, -257), (-134, -255), (-132, -254), (-128, -254),
(-127, -255), (-126, -255), (-124, -254), (-122, -252), (-120, -250),
(-116, -249), (-116, -253), (-116, -255), (-113, -257), (-110, -258),
(-107, -256), (-104, -254), (-103, -251), (-102, -251), (-98, -252),
(-97, -254), (-95, -255), (-92, -255), (-89, -253), (-86, -250),
(-82, -246), (-80, -244), (-75, -244), (-74, -242), (-73, -241),
(-72, -241), (-70, -240), (-72, -237), (-73, -235), (-72, -233),
(-70, -232), (-68, -231), (-68, -228), (-68, -226), (-67, -225),
(-67, -222), (-69, -221), (-69, -219), (-68, -216), (-67, -216),
(-65, -214),
]
plotPoly(points, True, pencolor=(0.27, 0.16, 0.13),
fillcolor=(0.12, 0.15, 0.1), width=2)
# 树叶
points = [
(-341, -129), (-341, -133), (-341, -137), (-346, -141), (-350, -142),
(-354, -145), (-354, -151), (-348, -154), (-346, -157), (-346, -163),
(-345, -171), (-346, -177), (-347, -181), (-347, -184), (-342, -188),
(-337, -188), (-321, -189), (-313, -189), (-308, -190), (-304, -192),
(-303, -195), (-303, -197), (-304, -199), (-301, -203), (-296, -206),
(-293, -207), (-285, -204), (-278, -199), (-269, -195), (-265, -192),
(-262, -186), (-262, -191), (-262, -194), (-259, -196), (-254, -195),
(-249, -193), (-246, -191), (-245, -195), (-244, -200), (-243, -205),
(-242, -208), (-234, -207), (-226, -205), (-220, -203), (-216, -200),
(-211, -196), (-211, -201), (-212, -206), (-210, -210), (-207, -213),
(-203, -215), (-197, -212), (-194, -209), (-185, -210), (-178, -210),
(-176, -215), (-175, -219), (-172, -222), (-168, -222), (-166, -221),
(-165, -218), (-164, -222), (-163, -225), (-159, -227), (-154, -226),
(-152, -222), (-150, -219), (-148, -217), (-144, -216), (-142, -217),
(-142, -220), (-141, -224), (-139, -225), (-135, -224), (-131, -223),
(-128, -220), (-125, -218), (-122, -218), (-121, -220), (-121, -224),
(-119, -226), (-116, -226), (-112, -223), (-107, -217), (-102, -211),
(-98, -208), (-93, -207), (-87, -207), (-84, -209), (-81, -212),
(-79, -217), (-76, -225), (-74, -228), (-72, -231), (-71, -229),
(-70, -225), (-70, -221), (-72, -219), (-72, -217), (-69, -214),
(-68, -212), (-68, -209), (-70, -206), (-73, -201), (-76, -195),
(-83, -189), (-89, -186), (-97, -181), (-105, -177), (-112, -174),
(-122, -172), (-129, -171), (-138, -169), (-147, -167), (-153, -164),
(-158, -160), (-162, -158), (-169, -155), (-174, -153), (-183, -150),
(-191, -148), (-196, -147), (-203, -147), (-210, -147), (-219, -148),
(-228, -149), (-238, -150), (-248, -150), (-252, -151), (-256, -149),
(-263, -145), (-267, -140), (-276, -134), (-283, -132), (-293, -129),
(-302, -127), (-314, -126), (-322, -125), (-332, -126),
]
plotPoly(points, True, pencolor=(0.18, 0.23, 0.14),
fillcolor=(0.18, 0.23, 0.14), width=2)
# 树干
points = [
(-68, 258), (-66, 250), (-65, 243), (-64, 233), (-63, 226),
(-63, 221), (-61, 218), (-60, 215), (-60, 211), (-59, 201),
(-57, 192), (-55, 176), (-53, 165), (-51, 147), (-49, 137),
(-47, 116), (-46, 112), (-45, 109), (-44, 100), (-42, 86),
(-40, 70), (-38, 44), (-34, 24), (-31, 8), (-27, -11),
(-22, -29), (-17, -47), (-15, -65), (-13, -83), (-12, -104),
(-11, -123), (-12, -132), (-11, -161), (-10, -163), (-9, -170),
(-9, -192), (-8, -212), (-8, -242), (-8, -264), (-8, -271),
(-49, -271), (-48, -268), (-47, -263), (-45, -264), (-42, -265),
(-41, -264), (-41, -262), (-45, -259), (-50, -255), (-53, -253),
(-56, -252), (-61, -250), (-66, -247), (-70, -245), (-72, -244),
(-72, -242), (-70, -242), (-69, -241), (-70, -237), (-70, -234),
(-69, -233), (-66, -232), (-66, -229), (-66, -223), (-67, -218),
(-66, -216), (-64, -216), (-62, -213), (-63, -211), (-64, -207),
(-66, -204), (-66, -201), (-63, -201), (-61, -203), (-59, -206),
(-56, -207), (-53, -207), (-49, -209), (-47, -209), (-46, -206),
(-45, -184), (-45, -155), (-45, -124), (-45, -95), (-47, -78),
(-48, -53), (-50, -34), (-52, -7), (-56, 24), (-59, 49),
(-59, 60), (-60, 63), (-64, 77), (-67, 97), (-67, 108),
(-71, 121), (-75, 136), (-78, 154), (-82, 173), (-88, 194),
(-93, 219), (-98, 238), (-103, 255), (-107, 270), (-109, 272),
(-73, 272), (-70, 263),
]
plotPoly(points, True, pencolor=(0.51, 0.33, 0.25),
fillcolor=(0.47, 0.29, 0.24), width=2)
# 嘴巴周围
points = [
(31, 149), (27, 150), (20, 150), (18, 149), (15, 147),
(14, 146), (13, 144), (12, 143), (12, 140), (13, 137),
(15, 133), (19, 126), (22, 123), (25, 120), (28, 118),
(31, 116), (33, 115), (36, 115), (43, 115), (47, 115),
(50, 116), (54, 117), (57, 119), (61, 122), (64, 126),
(67, 131), (68, 135), (68, 139), (67, 142), (65, 145),
(62, 144), (54, 144), (52, 146), (49, 147), (45, 148),
(42, 148), (41, 147), (40, 146), (38, 148), (37, 149),
(35, 149),
]
plotPoly(points, True, pencolor=(0.16, 0.13, 0.21),
fillcolor=(0.95, 0.95, 0.97), width=2)
# 鼻子
points = [
(20, 148), (26, 148), (28, 147), (30, 146), (30, 144),
(29, 142), (27, 141), (25, 140), (23, 140), (21, 141),
(19, 143), (18, 145), (19, 147),
]
plotPoly(points, True, pencolor=(0.01, 0.0, 0.02),
fillcolor=(0.01, 0.0, 0.02), width=2)
# 嘴巴
points = [
(16, 138), (18, 136), (21, 135), (22, 136), (23, 135),
(25, 134), (29, 134), (29, 136), (30, 134), (36, 133),
(42, 134), (44, 137), (46, 138), (47, 139), (49, 140),
(51, 140), (52, 139), (53, 137), (53, 135), (52, 133),
(50, 132), (49, 131), (47, 131), (46, 132), (43, 133),
(42, 134), (39, 134),
]
plotPoly(points, True, pencolor=(0.21, 0.17, 0.21),
fillcolor=(1.0, 1.0, 1.0), width=2)
#
points = [
(45, 126), (47, 125), (49, 124), (52, 125), (55, 126),
]
plotLine(points, pencolor=(0.38, 0.35, 0.41), width=2)
#
points = [
(46, 133), (48, 135), (49, 137), (49, 141),
]
plotLine(points, pencolor=(0.53, 0.48, 0.52), width=2)
turtle.up()
turtle.goto((29, 154))
turtle.down()
turtle.pencolor((0.55, 0.5, 0.58))
turtle.dot(5)
#
points = [
(40, 151), (41, 153), (43, 153), (45, 153), (46, 152),
(46, 151),
]
plotLine(points, pencolor=(0.15, 0.11, 0.17), width=2)
#
points = [
(38, 150), (39, 154), (41, 156), (43, 157), (46, 158),
(49, 157), (51, 156), (50, 152), (50, 150), (49, 147),
]
plotLine(points, pencolor=(0.17, 0.14, 0.19), width=2)
#
points = [
(25, 151), (24, 154), (23, 156), (21, 156), (19, 155),
(17, 154), (18, 153), (18, 151), (18, 150),
]
plotLine(points, pencolor=(0.22, 0.18, 0.19), width=2)
# 眉毛
points = [
(59, 166), (59, 169), (59, 170), (57, 171), (55, 171),
(53, 169), (48, 167), (45, 165), (41, 163), (39, 161),
(36, 159), (34, 158), (31, 158), (29, 160), (27, 162),
(25, 165), (24, 168), (24, 171), (24, 175),
]
plotLine(points, pencolor=(0.01, 0.06, 0.22), width=3)
#
points = [
(39, 171), (37, 169), (35, 166), (34, 163), (33, 160),
]
plotLine(points, pencolor=(0.17, 0.15, 0.2), width=2)
#
points = [
(28, 163), (30, 165), (31, 167), (31, 169), (32, 171),
]
plotLine(points, pencolor=(0.27, 0.25, 0.28), width=2)
# 头部线条
points = [
(44, 190), (41, 190), (39, 190), (37, 189), (35, 187),
(33, 185), (31, 184), (28, 181),
]
plotLine(points, pencolor=(0.07, 0.13, 0.3), width=2)
# 脸部线条
points = [
(53, 155), (56, 157), (60, 159), (63, 161),
]
plotLine(points, pencolor=(0.26, 0.24, 0.29), width=2)
#
points = [
(51, 148), (54, 149), (58, 151), (64, 155), (69, 158),
(74, 163), (81, 168),
]
plotLine(points, pencolor=(0.23, 0.22, 0.3), width=2)
#
points = [
(56, 146), (63, 149), (69, 152), (75, 157), (80, 160),
]
plotLine(points, pencolor=(0.25, 0.22, 0.29), width=2)
#
points = [
(92, 151), (91, 151), (88, 151), (86, 150), (82, 148),
(78, 146), (77, 144), (73, 140), (71, 137), (68, 135),
]
plotLine(points, pencolor=(0.2, 0.21, 0.32), width=2)
#
points = [
(61, 122), (60, 120), (59, 118), (58, 114),
]
plotLine(points, pencolor=(0.16, 0.16, 0.21), width=2)
#
points = [
(19, 148), (17, 153), (14, 159), (13, 165),
(11, 175), (9, 183), (9, 189), (8, 195),
]
plotLine(points, pencolor=(0.16, 0.16, 0.21), width=2)
#
points = [
(18, 145), (15, 148), (11, 153), (7, 161), (4, 168),
(2, 175), (0, 180),
]
plotLine(points, pencolor=(0.16, 0.16, 0.21), width=2)
#
points = [
(52, 155), (51, 152), (51, 149), (52, 145), (55, 145),
(59, 145), (63, 146), (68, 147),
]
plotLine(points, pencolor=(0.22, 0.2, 0.27), width=2)
# 左耳
points = [
(101, 225), (97, 219), (94, 212), (91, 206), (88, 200),
(87, 195), (85, 189), (84, 182), (83, 176), (83, 176),
(85, 175), (87, 177), (89, 181), (91, 185), (92, 189),
(89, 179), (90, 176), (90, 173), (92, 173), (94, 177),
(91, 171), (90, 168), (90, 166), (90, 162), (89, 160),
(89, 158), (89, 155), (91, 153), (92, 153), (96, 156),
(99, 161), (100, 165), (102, 171), (102, 175), (101, 182),
(101, 188), (99, 197), (100, 203), (100, 210), (100, 217),
]
plotPoly(points, True, pencolor=(0.2, 0.2, 0.18),
fillcolor=(0.62, 0.33, 0.35), width=2)
# 右翅膀
points = [
(-24, 196), (-17, 190), (-11, 186), (-7, 184), (-5, 182),
(-5, 180), (-8, 179), (-8, 176), (-6, 172), (-1, 168),
(2, 167), (1, 164), (-3, 163), (-7, 163), (-11, 163),
(-15, 164), (-18, 165), (-20, 174), (-23, 184),
]
plotPoly(points, True, pencolor=(0.28, 0.21, 0.07),
fillcolor=(1.0, 1, 1.0), width=2)
#
points = [
(-102, 245), (-98, 230), (-93, 213), (-87, 188), (-83, 168),
(-78, 147), (-76, 134), (-81, 133), (-84, 135), (-89, 136),
(-98, 136), (-102, 135), (-105, 135), (-109, 138), (-111, 139),
(-115, 139), (-119, 139), (-120, 139), (-122, 143), (-125, 146),
(-129, 149), (-135, 153), (-145, 157), (-155, 160), (-165, 163),
(-173, 165), (-177, 167), (-176, 170), (-172, 173), (-172, 177),
(-173, 182), (-176, 186), (-183, 195), (-197, 207), (-208, 215),
(-220, 223), (-227, 226), (-232, 229), (-234, 233), (-231, 236),
(-227, 236), (-223, 240), (-222, 245), (-223, 252), (-225, 260),
(-228, 266), (-234, 273), (-111, 276), (-105, 257),
]
plotPoly(points, True, pencolor=(0.29, 0.28, 0.23),
fillcolor=(1, 1, 1), width=2)
#
points = [
(-20, 181), (-16, 181), (-10, 181), (-7, 181),
]
plotLine(points, pencolor=(0.77, 0.6, 0.71), width=2)
#
points = [
(-86, 171), (-97, 171), (-112, 170), (-128, 170), (-145, 168),
(-164, 167), (-176, 166),
]
plotLine(points, pencolor=(0.77, 0.6, 0.71), width=2)
#
points = [
(-96, 217), (-118, 220), (-157, 225), (-182, 229), (-206, 231),
(-221, 233), (-225, 236),
]
plotLine(points, pencolor=(0.77, 0.6, 0.71), width=2)
# 左翅膀
points = [
(93, 153), (94, 150), (100, 149), (113, 150), (121, 152),
(133, 153), (142, 153), (148, 151), (152, 149), (157, 143),
(162, 136), (168, 127), (174, 118), (176, 114), (179, 114),
(181, 114), (184, 113), (189, 120), (196, 125), (203, 131),
(212, 139), (225, 147), (239, 154), (252, 159), (262, 164),
(272, 167), (270, 168), (267, 170), (264, 172), (265, 175),
(268, 181), (275, 189), (283, 195), (291, 201), (300, 207),
(309, 211), (318, 216), (326, 220), (330, 223), (329, 225),
(326, 226), (322, 226), (319, 227), (319, 232), (321, 239),
(326, 247), (332, 255), (337, 262), (342, 268), (345, 271),
(179, 273), (170, 267), (165, 262), (159, 257), (153, 253),
(152, 252), (153, 247), (153, 241), (153, 236), (151, 230),
(148, 226), (145, 222), (143, 220), (139, 216), (135, 212),
(131, 209), (123, 205), (117, 203), (119, 199), (120, 194),
(117, 188), (113, 182), (108, 177), (106, 174), (103, 172),
(101, 171), (103, 169), (104, 167), (103, 164), (101, 161),
(99, 158), (97, 156), (94, 154),
]
plotPoly(points, True, pencolor=(0.17, 0.01, 0.03),
fillcolor=(1, 1, 1), width=2)
# 左翅
points = [
(103, 170), (120, 170), (148, 170), (176, 168), (204, 168),
(242, 168), (270, 167),
]
plotLine(points, pencolor=(0.77, 0.6, 0.71), width=2)
# 左翅
points = [
(122, 205), (133, 205), (150, 207), (174, 210), (188, 212),
(215, 214), (243, 217), (268, 220), (286, 223), (319, 226),
]
plotLine(points, pencolor=(0.77, 0.6, 0.71), width=2)
# 左翅
points = [
(156, 253), (162, 253), (179, 257), (194, 261), (210, 265),
(222, 269), (228, 270),
]
plotLine(points, pencolor=(0.77, 0.6, 0.71), width=2)
# 左翅手环
points = [
(148, 151), (151, 149), (153, 147), (154, 150), (153, 154),
(151, 157), (149, 159), (144, 159), (141, 157), (137, 154),
(134, 150), (130, 144), (128, 138), (127, 132), (127, 127),
(130, 125), (134, 124), (136, 124), (137, 130), (139, 140),
(143, 147), (145, 150),
]
plotPoly(points, True, pencolor=(0.25, 0.28, 0.25),
fillcolor=(0.82, 0.52, 0.73), width=2)
#
points = [
(146, 150), (147, 153), (149, 155), (151, 157),
]
plotLine(points, pencolor=(0.25, 0.28, 0.25), width=2)
# 隐藏海龟
turtle.hideturtle()
turtle.done()