用 Python Turtle 绘制经典杰瑞鼠:捕捉卡通世界中的小聪明

news2025/7/15 14:44:46

用 Python Turtle 绘制经典杰瑞鼠:捕捉卡通世界中的小聪明

  • 🐸 前言 🐸
  • 🐞往期绘画>>点击进所有绘画🐞
  • 🐋 效果图 🐋
  • 🐉 代码 🐉

🐸 前言 🐸

杰瑞鼠,那个机智、狡猾又充满魅力的小老鼠,是卡通《汤姆和杰瑞》中的主角之一。尽管身形小巧,但杰瑞的聪明才智让他总是能巧妙地逃脱汤姆猫的追捕,给观众带来了无数欢笑。今天,我们将通过 Python 的 Turtle 模块来绘制出经典的 杰瑞鼠 形象,重温这个小老鼠的机智与可爱。
在这个教程中,我们将用 Python 代码细致地描绘杰瑞的脸部特征、耳朵和尾巴等经典元素,力求捕捉出他那俏皮的神态。虽然杰瑞看似简单,但细致的绘制过程会帮助你更加熟悉 Turtle 的各种操作,并享受将自己喜爱的卡通角色转化为代码的过程。

🐞往期绘画>>点击进所有绘画🐞

序号链接
01🦖用 Python 与 Turtle 创作属于你的“冰墩墩”!🦖
02🦖用 Python 与 Turtle 创作属于你的“雪容融”!🦖
03🦖百变小樱魔法阵全解析🦖
04🦖魔法少女全解析🦖
05🦖重现汤姆劈树的经典瞬间🦖
06🐿️喜羊羊与灰太狼之喜羊羊绘画🐿️
07🐿️喜羊羊与灰太狼之懒羊羊绘画🐿️
08🐿️喜羊羊与灰太狼之沸羊羊翻身🐿️
09🐿️神奇宝贝🐿️
10⏰Q 版蜘蛛侠:代码里的超级英雄⏰
11⏰经典汤姆猫:重温卡通角色的经典魅力⏰
12⏰经典杰瑞鼠:捕捉卡通世界中的小聪明⏰
13⏰罗小黑:用代码呈现可爱与奇幻的萌宠⏰
14🎃麻衣学姐:从代码中描绘温柔的学姐形象🎃
15🎃小猪佩奇的涂鸦乐园🎃
16💥💥更多点击💥💥

🐋 效果图 🐋

在这里插入图片描述

🐉 代码 🐉

# 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(452, 680, 100, 100)

# 绘制

points = [
    (8, 245), (3, 241), (0, 233), (-4, 221), (-9, 214), 
    (-18, 203), (-28, 202), (-38, 198), (-46, 196), (-54, 191), 
    (-64, 184), (-71, 174), (-76, 165), (-81, 156), (-90, 162), 
    (-100, 167), (-112, 167), (-119, 162), (-125, 155), (-128, 147), 
    (-128, 135), (-127, 120), (-125, 109), (-123, 104), (-120, 91), 
    (-117, 82), (-110, 70), (-101, 58), (-88, 46), (-100, 37), 
    (-113, 25), (-124, 18), (-141, 9), (-151, -1), (-158, -5), 
    (-162, -11), (-164, -20), (-165, -30), (-164, -37), (-164, -47), 
    (-161, -53), (-159, -59), (-158, -68), (-162, -79), (-162, -91), 
    (-165, -105), (-165, -118), (-163, -132), (-163, -149), (-156, -173), 
    (-144, -197), (-129, -222), (-129, -222), (-112, -246), (-122, -241), 
    (-143, -241), (-143, -241), (-143, -241), (-159, -236), (-174, -247), 
    (-175, -265), (-162, -272), (-155, -279), (-141, -278), (-97, -278), 
    (-86, -278), (-79, -269), (-72, -276), (-54, -282), (-36, -282), 
    (-24, -284), (-14, -288), (-1, -288), (6, -283), (11, -276), 
    (18, -267), (19, -258), (14, -249), (2, -242), (-4, -242), 
    (-42, -246), (-48, -254), (-44, -245), (-37, -231), (-25, -208), 
    (-14, -182), (-8, -166), (6, -165), (15, -163), (23, -160), 
    (30, -153), (41, -143), (47, -135), (55, -124), (64, -115), 
    (71, -111), (77, -109), (84, -108), (91, -108), (83, -107), 
    (75, -107), (66, -110), (58, -114), (50, -120), (41, -130), 
    (34, -138), (27, -144), (15, -152), (-4, -156), (-6, -150), 
    (-6, -133), (-9, -114), (13, -98), (23, -88), (31, -74), 
    (32, -56), (30, -42), (27, -30), (23, 1), (21, 18), 
    (17, 26), (31, 31), (40, 35), (49, 39), (62, 32), 
    (71, 26), (83, 23), (109, 24), (130, 32), (150, 45), 
    (158, 52), (172, 68), (182, 86), (189, 106), (190, 113), 
    (191, 142), (186, 156), (180, 167), (172, 173), (164, 178), 
    (141, 178), (126, 174), (112, 169), (101, 163), (86, 155), 
    (66, 207), (61, 222), (60, 236), (58, 221), (78, 168), 
    (69, 182), (39, 214), (62, 183), (71, 170), (57, 183), 
    (43, 191), (29, 200), (28, 216), (24, 229), (17, 239), 
    (11, 244), 
    ]
plotPoly(points, True, pencolor=(0.3, 0.15, 0.02),
         fillcolor=(0.67, 0.39, 0.21), width=2)

points = [
    (-90, 146), (-80, 150), (-63, 152), (-49, 148), (-35, 135), 
    (-28, 119), (-32, 110), (-32, 97), (-28, 86), (-20, 79), 
    (-8, 74), (6, 73), (20, 74), (12, 64), (-9, 44), 
    (-26, 36), (-48, 30), (-65, 32), (-79, 41), (-95, 52), 
    (-105, 64), (-113, 76), (-118, 87), (-122, 98), (-122, 114), 
    (-122, 128), (-118, 146), (-107, 156), (-96, 157), (-85, 153), 
    (-84, 151), 
    ]
plotPoly(points, True, pencolor=(0.13, 0.06, 0.0),
         fillcolor=(0.78, 0.56, 0.4), width=2)

points = [
    (-75, 120), (-55, 120), (-50, 123), (-48, 132), (-53, 137), 
    (-68, 143), (-80, 144), (-84, 140), (-83, 133), (-80, 127), 
    ]
plotPoly(points, True, pencolor=(0.17, 0.11, 0.07),
         fillcolor=(0.06, 0.07, 0.05), width=2)

points = [
    (-65, 136), (-64, 137), (-61, 137), (-58, 135), (-57, 133), 
    (-58, 131), (-59, 131), (-61, 131), (-63, 132), (-64, 133), 
    (-65, 134), 
    ]
plotPoly(points, True, pencolor=(0.33, 0.39, 0.45),
         fillcolor=(0.93, 0.99, 1.0), width=2)

points = [
    (-107, 132), (-107, 123), (-104, 112), (-100, 105), (-95, 98), 
    (-90, 91), (-84, 91), (-83, 102), (-84, 91), (-80, 85), 
    (-75, 81), (-69, 79), (-60, 79), (-52, 82), (-46, 85), 
    (-41, 89), (-34, 94), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

points = [
    (-96, 83), (-91, 74), (-86, 70), (-79, 66), (-72, 65), 
    (-67, 66), (-64, 68), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

points = [
    (-36, 137), (-30, 145), (-25, 155), (-20, 163), (-13, 171), 
    (-5, 178), (3, 183), (14, 184), (20, 180), (20, 171), 
    (16, 162), (6, 147), (2, 141), (-2, 136), (-7, 132), 
    (-14, 127), (-22, 121), (-26, 118), (-29, 120), (-32, 129), 
    ]
plotPoly(points, True, pencolor=(0.06, 0.01, 0.0),
         fillcolor=(0.9, 0.94, 0.93), width=2)

points = [
    (-38, 198), (-43, 198), (-48, 196), (-51, 194), (-58, 190), 
    (-62, 186), (-66, 182), (-70, 176), (-74, 170), (-77, 164), 
    (-80, 158), (-82, 152), (-83, 150), (-76, 150), (-71, 151), 
    (-67, 151), (-63, 156), (-59, 160), (-56, 165), (-51, 172), 
    (-46, 179), (-41, 186), (-39, 191), 
    ]
plotPoly(points, True, pencolor=(0.18, 0.11, 0.04),
         fillcolor=(0.95, 0.95, 0.95), width=2)

points = [
    (-75, 151), (-67, 151), (-63, 156), (-59, 160), (-55, 164), 
    (-52, 171), (-57, 172), (-61, 170), (-64, 168), (-68, 165), 
    (-70, 162), (-71, 160), (-74, 154), 
    ]
plotPoly(points, True, pencolor=(0.17, 0.14, 0.12),
         fillcolor=(0.08, 0.03, 0.01), width=2)

points = [
    (-22, 121), (-21, 130), (-19, 135), (-15, 142), (-10, 146), 
    (-5, 150), (0, 150), (5, 145), (4, 141), (1, 138), 
    (-3, 135), (-6, 131), (-10, 128), (-14, 125), (-17, 123), 
    ]
plotPoly(points, True, pencolor=(0.07, 0.02, 0.03),
         fillcolor=(0.08, 0.08, 0.08), width=2)

points = [
    (9, 185), (6, 192), (3, 199), (2, 205), (3, 213), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

points = [
    (14, 185), (13, 194), (13, 200), (15, 209), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

points = [
    (19, 196), (26, 199), (30, 195), (33, 191), (35, 188), 
    (35, 181), (34, 175), (31, 167), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

points = [
    (-173, 151), (-153, 148), (-131, 145), (-119, 142), (-108, 137), 
    (-100, 134), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

points = [
    (-96, 146), (-107, 157), (-118, 166), (-130, 173), (-144, 180), 
    (-159, 184), 
    ]
plotLine(points, pencolor=(0.02, 0.02, 0.02), width=2)

points = [
    (-41, 111), (-31, 107), (-14, 102), (-1, 98), (11, 91), 
    (21, 85), (33, 77), (45, 68), (56, 58), (68, 47), 
    ]
plotLine(points, pencolor=(0.02, 0.02, 0.02), width=2)

points = [
    (-43, 120), (-25, 121), (-9, 123), (10, 121), (26, 120), 
    (50, 117), (76, 112), 
    ]
plotLine(points, pencolor=(0.02, 0.02, 0.02), width=2)

points = [
    (162, 180), (147, 174), (135, 168), (118, 161), (105, 149), 
    (96, 137), (85, 122), (78, 108), (75, 91), (81, 80), 
    (93, 77), (105, 92), (106, 111), (111, 96), (109, 86), 
    (105, 79), (96, 70), (87, 65), (74, 64), (61, 53), 
    (48, 40), (56, 35), (70, 28), (85, 24), (107, 24), 
    (123, 30), (143, 42), (163, 59), (176, 77), (188, 99), 
    (191, 128), (189, 148), (181, 165), (172, 176), 
    ]
plotPoly(points, True, pencolor=(0.05, 0.0, 0.0),
         fillcolor=(0.83, 0.52, 0.4), width=2)

points = [
    (-98, 14), (-110, 5), (-123, -9), (-136, -23), (-147, -39), 
    (-156, -57), (-159, -70), (-163, -91), (-164, -110), (-164, -123), 
    (-162, -143), (-158, -156), (-149, -169), (-138, -179), (-127, -183), 
    (-110, -186), (-94, -182), (-85, -174), (-77, -162), (-72, -146), 
    (-70, -130), (-65, -98), (-64, -68), (-61, -48), (-53, -32), 
    (-51, -18), (-52, -1), (-57, 4), (-64, 6), (-70, 6), 
    (-79, 4), (-89, 1), (-89, 6), (-91, 12), 
    ]
plotPoly(points, True, pencolor=(0.67, 0.43, 0.27),
         fillcolor=(0.78, 0.56, 0.39), width=2)

points = [
    (-79, 23), (-76, 28), (-77, 36), (-66, 31), (-59, 27), 
    (-51, 25), (-43, 22), (-35, 21), (-22, 21), (-19, 20), 
    (-31, 8), (-21, 20), (-15, 23), (-8, 26), (-3, 30), 
    (11, 29), (17, 23), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

points = [
    (-92, 19), (-103, 11), (-114, 3), (-122, -5), (-132, -17), 
    (-141, -27), (-146, -39), (-153, -49), (-157, -61), 
    ]
plotLine(points, pencolor=(0.16, 0.07, 0.01), width=2)

points = [
    (-7, -39), (-14, -52), (-22, -60), (-23, -45), (-21, -64), 
    (-20, -72), (-17, -85), (-15, -92), (-13, -101), (-9, -113), 
    ]
plotLine(points, pencolor=(0.23, 0.14, 0.07), width=2)

points = [
    (-99, -197), (-95, -204), (-91, -218), (-86, -235), (-83, -252), 
    (-80, -265), (-79, -268), 
    ]
plotLine(points, pencolor=(0.18, 0.01, 0.0), width=2)

points = [
    (-142, -246), (-151, -248), (-157, -252), (-159, -257), (-160, -263), 
    (-160, -269), 
    ]
plotLine(points, pencolor=(0.18, 0.0, 0.0), width=2)

points = [
    (-13, -257), (0, -257), (5, -261), (8, -265), (9, -269), 
    (9, -272), (8, -276), 
    ]
plotLine(points, pencolor=(0.18, 0.11, 0.04), width=2)

turtle.up()
turtle.goto((0, 143))
turtle.down()
turtle.pencolor((0.9, 0.91, 0.85))
turtle.dot(5)

turtle.up()
turtle.goto((-57, 167))
turtle.down()
turtle.pencolor((1.0, 0.95, 0.95))
turtle.dot(5)


# 隐藏海龟
turtle.hideturtle()
turtle.done()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2261240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel拆分脚本

Excel拆分 工作表按行拆分为工作薄 工作表按行拆分为工作薄 打开要拆分的Excel文件,使用快捷键(AltF11)打开脚本界面,选择要拆分的sheet,打开Module,在Module中输入脚本代码,然后运行脚本 Su…

ModStartCMS v9.1.0 数据Grid样式优化,富文本格式刷支持,精简代码

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

2024年12月16日Github流行趋势

项目名称:PDFMathTranslate 项目维护者:Byaidu reycn hellofinch Wybxc YadominJinta项目介绍:基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/Docker。项目star数…

3-机器人视觉-机器人抓取与操作

文章目录 3机器人视觉目录 1. 传感器和标定摄像头模型Intrinsic MatrixExtrinsic Matrix 标定内参标定手眼标定和外参标定 力传感器&其它传感器其它传感器 2. 神经网络和图像处理2D特征处理常见架构 训练流程推理流程部署流程2D 图像任务3D Point Cloud FeaturePointNet Ap…

Java String详解(二)

上一篇博客:Java String详解(一) 写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blo…

Qt之点击鼠标右键创建菜单栏使用(六)

Qt开发 系列文章 - menu(六) 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、一个状态栏(status…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(一)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(一) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Lin…

IntelliJ IDEA(2024版) 的安装、配置与使用教程:常用配置、创建工程等操作(很详细,你想要的都在这里)

IDEA的安装、配置与使用: Ⅰ、IDEA 的安装:1、IDEA 的下载地址(官网):2、IDEA 分为两个版本:旗舰版 (Ultimate) 和 社区版 (Community)其一、两个不同版本的安装文件:其二、两个不同版本的详细对比: 3、IDE…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文,如果开发人员发生流动,很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先,我们利用AES工具生成一个随机秘钥&#…

深度学习基础--将yolov5的backbone模块用于目标识别会出现怎么效果呢??

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 yolov5网络结构比较复杂,上次我们简要介绍了yolov5网络模块,并且复现了C3模块,深度学习基础–yolov5网络结构简介&a…

数据结构---图(Graph)

图(Graph)是一种非常灵活且强大的数据结构,用于表示实体之间的复杂关系。在图结构中,数据由一组节点(或称为顶点)和连接这些节点的边组成。图可以用于表示社交网络、交通网络、网络路由等场景。 1. 基本概…

人工智能技术的深度解析与推广【人工智能的应用场景】

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

软件开发中 Bug 为什么不能彻底消除

在软件开发中,Bug无法彻底消除的原因主要包括:软件复杂度高、人员认知与沟通受限、需求和环境不断变化、工具与测试覆盖不足、经济与时间成本制约。其中“需求和环境不断变化”尤为关键,因为在实际开发中,业务逻辑随着市场与用户反…

【嵌入式软件】跑开发板的前置服务配置

在嵌入式开发中,通常需要在 开发板和主机之间共享、传输和挂载文件。 这篇文章是关于如何在 Ubuntu 中配置 Samba、TFTP 和 NFS 协议的详细步骤。这些协议分别用于远程文件共享、文件传输和内核挂载文件系统。 如何安装协议: 参考:ubuntu18配置:详细的内容我手写了一份文档。…

CTF 攻防世界 Web: FlatScience write-up

题目名称-FlatScience 网址 index 目录中没有发现提示信息,链接会跳转到论文。 目前没有发现有用信息,尝试目录扫描。 目录扫描 注意到存在 robots.txt 和 login.php。 访问 robots.txt 这里表明还存在 admin.php admin.php 分析 在这里尝试一些 sql…

从YOLOv5到训练实战:易用性和扩展性的加强

文章目录 前言一、模型介绍二、YOLOv5网络结构1.Input(输入端):智能预处理与优化策略2.Backbone(骨干网络):高效特征提取3.NECK(颈部):特征增强与多尺度融合4.Prediction…

Ilya Sutskever发表了对AI未来发展的颠覆性看法

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Crawl4AI:一个为大型语言模型(LLM)和AI应用设计的网页爬虫和数据提取工具实战

这里写目录标题 一、crawl4AI功能及简介1、简介2、特性 二、项目地址三、环境安装四、大模型申请五、代码示例1.生成markdown2.结构化数据 一、crawl4AI功能及简介 1、简介 Crawl4AI 是一个开源的网页爬虫和数据抓取工具,一个python项目,主要为大型语言…

HuLa——一款基于 Tauri+Vue3 构建的桌面即时通讯应用

文章目录 一、HuLa简介二、技术栈介绍三、安装运行四、界面体验五、开源地址 一、HuLa简介 HuLa 是一个基于 Tauri、Vite 5、Vue 3 和 TypeScript 构建的即时通讯系统。它利用了 Tauri 的跨平台能力和 Vue 3 的响应式设计,结合了 TypeScript 的类型安全特性和 Vite…

websocket_asyncio

WebSocket 和 asyncio 指南 简介 本指南涵盖了使用 Python 中的 websockets 库进行 WebSocket 编程的基础知识,以及 asyncio 在异步非阻塞 I/O 中的作用。它提供了构建高效 WebSocket 服务端和客户端的知识,以及 asyncio 的特性和优势。 1. 什么是 WebS…