Python源码分享10:使用海龟画图turtle画哆啦A梦

news2024/11/25 16:27:13

turtle模块是一个Python的标准库之一,它提供了一个基于Turtle graphics的绘图库。Turtle graphics是一种流行的绘图方式,它通过控制一个小海龟在屏幕上移动来绘制图形。

turtle模块可以让您轻松地创建和控制海龟图形,从而帮助您学习Python编程和图形编程的基本概念。您可以使用turtle模块绘制各种形状、线条和图案,还可以通过添加颜色和其他效果来增强绘图的视觉效果。

turtle模块还提供了一些简单的函数和命令,例如前进、后退、转向、设置画笔颜色和粗细等等。这些函数和命令使得您可以轻松地控制海龟的移动和绘图行为。此外,turtle模块还提供了一些高级功能,例如创建自己的绘图函数、保存和加载绘图文件等等。

总之,turtle模块是一个非常适合初学者使用的Python库,它可以帮助您学习Python编程和图形编程的基本概念,并为您提供了一个轻松愉快的绘图环境。

import turtle as t

def flyTo(x, y):
    t.penup()
    t.goto(x, y)
    t.pendown()
def drawEye():
    t.tracer(False)
    a = 2.5
    for i in range(120):
        if 0 <= i < 30 or 60 <= i < 90:
            a -= 0.05
        else:
            a += 0.05
        t.left(3)
        t.fd(a)
    t.tracer(True)
def beard():
    """ 画胡子, 一共六根
    """
    # 左边第一根胡子
    flyTo(-37, 135)
    t.seth(165)
    t.fd(60)
    # 左边第二根胡子
    flyTo(-37, 125)
    t.seth(180)
    t.fd(60)
    # 左边第三根胡子
    flyTo(-37, 115)
    t.seth(193)
    t.fd(60)
    # 右边第一根胡子
    flyTo(37, 135)
    t.seth(15)
    t.fd(60)
    # 右边第二根胡子
    flyTo(37, 125)
    t.seth(0)
    t.fd(60)
    # 右边第三根胡子
    flyTo(37, 115)
    t.seth(-13)
    t.fd(60)
def drawRedScarf():
    """ 画围巾
    """
    t.fillcolor("red")  # 填充颜色
    t.begin_fill()
    t.seth(0)  # 朝向右
    t.fd(200)  # 前进10个单位
    t.circle(-5, 90)
    t.fd(10)
    t.circle(-5, 90)
    t.fd(207)
    t.circle(-5, 90)
    t.fd(10)
    t.circle(-5, 90)
    t.end_fill()
def drawMouse():
    flyTo(5, 148)
    t.seth(270)
    t.fd(100)
    t.seth(0)
    t.circle(120, 50)
    t.seth(230)
    t.circle(-120, 100)
def drawRedNose():
    flyTo(-10, 158)
    t.fillcolor("red")  # 填充颜色
    t.begin_fill()
    t.circle(20)
    t.end_fill()
def drawBlackdrawEye():
    t.seth(0)
    flyTo(-20, 195)
    t.fillcolor("#000000")  # 填充颜色
    t.begin_fill()
    t.circle(13)
    t.end_fill()
    t.pensize(6)
    flyTo(20, 205)
    t.seth(75)
    t.circle(-10, 150)
    t.pensize(3)
    flyTo(-17, 200)
    t.seth(0)
    t.fillcolor("#ffffff")
    t.begin_fill()
    t.circle(5)
    t.end_fill()
    flyTo(0, 0)
def drawFace():
    t.forward(183)  # 前行183个单位
    t.fillcolor("white")  # 填充颜色为白色
    t.begin_fill()  # 开始填充
    t.left(45)  # 左转45度
    t.circle(120, 100)  # 右边那半边脸
    t.seth(90)  # 朝向向上
    drawEye()  # 画右眼睛
    t.seth(180)  # 朝向左
    t.penup()  # 抬笔
    t.fd(60)  # 前行60
    t.pendown()  # 落笔
    t.seth(90)  # 朝向上
    drawEye()  # 画左眼睛
    t.penup()  # 抬笔
    t.seth(180)  # 朝向左
    t.fd(64)  # 前进64
    t.pendown()  # 落笔
    t.seth(215)  # 修改朝向
    t.circle(120, 100)  # 左边那半边脸
    t.end_fill()  #
def drawHead():
    """ 画了一个被切掉下半部分的圆
    """
    t.penup()  # 抬笔
    t.circle(150, 40)  # 画圆, 半径150,圆周角40
    t.pendown()  # 落笔
    t.fillcolor("#00a0de")  # 填充色
    t.begin_fill()  # 开始填充
    t.circle(150, 280)  # 画圆,半径150, 圆周角280
    t.end_fill()
def drawAll():
    drawHead()
    drawRedScarf()
    drawFace()
    drawRedNose()
    drawMouse()
    beard()
    flyTo(0, 0)
    t.seth(0)
    t.penup()
    t.circle(150, 50)
    t.pendown()
    t.seth(30)
    t.fd(40)
    t.seth(70)
    t.circle(-30, 270)
    t.fillcolor("#00a0de")
    t.begin_fill()
    t.seth(230)
    t.fd(80)
    t.seth(90)
    t.circle(1000, 1)
    t.seth(-89)
    t.circle(-1000, 10)
    t.seth(180)
    t.fd(70)
    t.seth(90)
    t.circle(30, 180)
    t.seth(180)
    t.fd(70)
    t.seth(100)
    t.circle(-1000, 9)
    t.seth(-86)
    t.circle(1000, 2)
    t.seth(230)
    t.fd(40)
    t.circle(-30, 230)
    t.seth(45)
    t.fd(81)
    t.seth(0)
    t.fd(203)
    t.circle(5, 90)
    t.fd(10)
    t.circle(5, 90)
    t.fd(7)
    t.seth(40)
    t.circle(150, 10)
    t.seth(30)
    t.fd(40)
    t.end_fill()
    # 左手
    t.seth(70)
    t.fillcolor("#FFFFFF")
    t.begin_fill()
    t.circle(-30)
    t.end_fill()
    # 脚
    flyTo(103.74, -182.59)
    t.seth(0)
    t.fillcolor("#FFFFFF")
    t.begin_fill()
    t.fd(15)
    t.circle(-15, 180)
    t.fd(90)
    t.circle(-15, 180)
    t.fd(10)
    t.end_fill()
    flyTo(-96.26, -182.59)
    t.seth(180)
    t.fillcolor("#FFFFFF")
    t.begin_fill()
    t.fd(15)
    t.circle(15, 180)
    t.fd(90)
    t.circle(15, 180)
    t.fd(10)
    t.end_fill()
    # 右手
    flyTo(-133.97, -91.81)
    t.seth(50)
    t.fillcolor("#FFFFFF")
    t.begin_fill()
    t.circle(30)
    t.end_fill()
    # 口袋
    flyTo(-103.42, 15.09)
    t.seth(0)
    t.fd(38)
    t.seth(230)
    t.begin_fill()
    t.circle(90, 260)
    t.end_fill()
    flyTo(5, -40)
    t.seth(0)
    t.fd(70)
    t.seth(-90)
    t.circle(-70, 180)
    t.seth(0)
    t.fd(70)
    # 铃铛
    flyTo(-103.42, 15.09)
    t.fd(90)
    t.seth(70)
    t.fillcolor("#ffd200")
    t.begin_fill()
    t.circle(-20)
    t.end_fill()
    t.seth(170)
    t.fillcolor("#ffd200")
    t.begin_fill()
    t.circle(-2, 180)
    t.seth(10)
    t.circle(-100, 22)
    t.circle(-2, 180)
    t.seth(180 - 10)
    t.circle(100, 22)
    t.end_fill()
    flyTo(-13.42, 15.09)
    t.seth(250)
    t.circle(20, 110)
    t.seth(90)
    t.fd(15)
    t.dot(10)
    flyTo(0, -150)
    drawBlackdrawEye()
def main():
    t.screensize(800, 6000, "#F0F0F0")
    t.pensize(3)
    t.speed(9)
    drawAll()
if __name__ == "__main__":
    main()
    t.mainloop()

在这里插入图片描述
完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具

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

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

相关文章

虚拟网络技术:bond技术

网卡bond也称为网卡捆绑&#xff0c;就是将两个或者更多的物理网卡绑定成一个虚拟网卡。 bond的作用&#xff1a; 1.提高网卡的吞吐量 2.增加网络的高可用&#xff0c;实现负载均衡。 一、bond简介 bond技术即bonding&#xff0c;能将多块物理网卡绑定到一块虚拟网卡上&…

AMEYA360--罗姆与Quanmatic公司利用量子技术优化制造工序并完成验证

全球知名半导体制造商罗姆(总部位于日本京都市)于2023年1月起与 Quanmatic Inc.(总部位于日本东京都新宿区&#xff0c;以下简称“Quanmatic”)展开合作&#xff0c;在半导体制造工序之一的EDS工序中测试并引入量子技术&#xff0c;以优化制造工序中的组合。目前&#xff0c;双…

springMVC实验(五)——数据校验

【知识要点】 数据校验的概念 在软件开发过程中&#xff0c;数据校验是非常重要的环节&#xff0c;用于确保数据的有效性和完整性 。数据校验分为客户端验证和服务端验证&#xff0c;客户端验证是确保人机交互过程中用户操作表单过程中的误操作&#xff0c;由JavaScript代码完…

Geoserver发布2000坐标系遇到的问题总结

在Geoserver上发布2000坐标系的服务时&#xff0c;要想正常发布服务&#xff0c;不仅仅是要涉及2000坐标系&#xff0c;还需要在发布的时候选择对坐标系。具体问题描述如下&#xff1a; 1.问题描述&#xff1a; 在发布好2000坐标系的服务后&#xff0c;在超图的平台加载服务时&…

联合基于信息论的安全和隐蔽通信的框架

这个标题很帅 abstractintroductionsystem modelPROPOSED JOINT OPTIMIZATION OF ITS AND COVERT TRANSMISSION RATE信息论安全 &#xff08;ITS&#xff09; Joint Information-Theoretic Secrecy and Covert Communication in the Presence of an Untrusted User and Warden …

根文件系统中文字符测试

一. 简介 本文在之前制作的根文件系统可以正常运行的基础上进行的&#xff0c;继上一篇文章地址如下&#xff1a; 根文件系统初步测试-CSDN博客 本文测试根文件系统的是否可以支持中文字符。 二. 根文件系统中文字符测试 1. 创建中文文件 打开 ubuntu虚拟机&#xff0c;进…

uniapp-hubildx配置

1.配置浏览器 &#xff08;1&#xff09;运行》运行到浏览器配置》配置web服务器 &#xff08;2&#xff09;选择浏览器安装路径 &#xff08;3&#xff09;浏览器安装路径&#xff1a; &#xff08;3.1&#xff09; 右键点击图标》属性 &#xff08;3.2&#xff09;选择目标&…

计算机组成原理-数据寻址-(相对寻址 基址寻址 变址寻址 )

文章目录 指令寻址vs数据寻址总览偏移寻址基址寻址基址寻址的作用变址寻址变址寻址的作用基址&变址复合寻址相对寻址相对寻址的作用 总结硬件如何实现数的比较 指令寻址vs数据寻址 总览 偏移寻址 变址寄存器&#xff1a;IX 基址寄存器&#xff1a;BR 基址寻址 没有基址…

EM32DX-C4【C#】站15

1外观&#xff1a; J301 直流 24V 电源输入 CAN0 CAN0 总线接口 CAN1 CAN1 总线接口 J201 IO 接线段子 S301-1、S301-2 输出口初始电平拨码设置 S301-3~S301-6 模块 CAN ID 站号拨码开关 S301-7 模块波特率拨码设置 S301-8 终端电阻选择开关 2DI&#xff1a; 公共端是…

HarmonyOS学习--初次下载安装和配置环境

一、Windows下载与安装软件 运行环境要求&#xff1a; 为保证DevEco Studio正常运行&#xff0c;建议电脑配置满足如下要求&#xff1a; 操作系统&#xff1a;Windows10 64位、Windows11 64位内存&#xff1a;8GB及以上硬盘&#xff1a;100GB及以上分辨率&#xff1a;1280*80…

第二证券:服务消费暖意尽显 产业升级促投资稳出口

如果说完结全年增加方针问题不大代表了2023年我国经济的“形”&#xff0c;那么消费、出资、出口这“三驾马车”在驱动增加过程中的结构性亮点则展示了我国经济的“势”。 2023年&#xff0c;服务消费暖意尽显&#xff0c;餐饮、文旅工作展示出的生气勃勃浮光掠影&#xff1b;…

群星璀璨!亚信科技、TM Forum联合举办数字领导力中国峰会,助百行千业打造转型升级双引擎

11月30日&#xff0c;亚信科技携手著名国际组织TM Forum&#xff08;TeleManagement Forum 电信管理论坛&#xff09;联合举办的2023数字领导力中国峰会在京隆重召开&#xff0c;国内外数百位行业领袖、专家学者、企业高管和生态伙伴齐聚一堂。大会由“数字领导力峰会”“IT数字…

为什么C语言用int *a 来声明指针变量,而不是int a声明?

为什么C语言用int *a 来声明指针变量&#xff0c;而不是int &a声明&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「C语言从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c…

第一节:认识微服务

一、微服务技术对比 Dubbo SpringCloudSpringCloudAlibaba注册中心zookeeper、Redis Eureka、ConsulNacos、Eureka服务远程调用Dubbo协议Feign&#xff08;http协议&#xff09;Dubbo、Feign配置中心无SpringCloudGateway、ZuulSpringCloudConfig、Nacos服务网…

React中ref的四种使用方法

个人公众号 公众号文章-React中ref的四种使用方法 个人公众号&#xff0c;求关注公众号~ 求指导&#xff0c;求点赞&#xff0c;求评论。 写在前面的废话 什么时候使用ref的环境就不说了&#xff0c;比如我们要获取一个输入框的value&#xff0c;无法通过state去获取&#x…

固态硬盘速度测试:硬盘实际性能是否符合标准?

在进行固态硬盘速度测试之前我们先来了解一下固态硬盘的读写速度是什么。固态硬盘的读写速度主要分为顺序读写和随机读写&#xff08;4K&#xff09;。 ​顺序读写&#xff1a;指的是硬盘在读写连贯、集中大文件时候的速度。比如在读取、拷贝单个视频文件时&#xff0c;就是硬盘…

Light-Head R-CNN: In Defense of Two-Stage Object Detector(2017.11)

文章目录 Abstract1. Introduction2. Related works3. Our Approach3.1. Light-Head R-CNN3.1.1. R-CNN subnet3.1.2. Thin feature maps for RoI warping 3.2. Light-Head R-CNN for Object Detection Conclusion 原文链接 Abstract 在本文中&#xff0c;我们首先研究了为什么…

如何能够获得想要的科研数据资料呢?

在当今的学术界&#xff0c;科研数据的获取对于研究人员来说至关重要。然而&#xff0c;由于各种原因&#xff0c;如数据难以获取、数据不完整或不准确等&#xff0c;使得许多研究人员面临困难。那么&#xff0c;如何才能够获得的科研数据资料呢&#xff1f; 一、参考文献 根…

实验报告-实验四(时序系统实验)

软件模拟电路图 说明 SW&#xff1a;开关&#xff0c;共六个Q1~Q3&#xff1a;输出Y0~Y3&#xff1a;输出 74LS194 首先&#xff0c;要给S1和S0高电位&#xff0c;将A~D的数据存入寄存器中&#xff08;如果开始没有存入数据&#xff0c;那么就是0000在里面移位&#xff0c;不…

Azure Machine Learning - 在 Azure 门户中创建演示应用

目录 准备环境启动向导配置搜索结果添加自动提示功能添加建议创建、下载和执行清理资源 使用 Azure 门户的“创建演示应用”向导来生成可下载的“localhost”样式的 Web 应用&#xff0c;该应用在浏览器中运行。 根据其配置&#xff0c;生成的应用在首次使用时就能正常运行&…