轻松学会python的turtle模块,画一箭穿心、小人儿发射爱心、520表白完整代码,海龟作图小创意

本文导航:若您是直接想要代码,那么请您移步代码区,复制粘贴即可;若您是想了解turtle模块更多知识的话,请您移步turtle模块知识区;若您想看完本文呢,那我定是感激涕零啦(✪ω✪)

您可以选择选择如下区域或不作选择浏览本文:

      • 代码区
      • turtle模块知识区:

       当我们学了turtle后(如果不懂turtle模块的话,文章末尾会详细介绍的),就想尝试为自己心里喜欢的人画一颗一颗爱心,想用代码逗自己的小猪猪女孩开心,表达自己的爱意,那么福利来了,动动小手指,复制粘贴即可,不过有些地方需要适当修改,快给自己心爱的女孩看看吧💖!!!

代码区

端上代码:

       .----._.'__    `. .--(#)(##)---/#\
.' @          /###\
:         ,   #####`-..__.-' _.-\###/  `;_:    `"'.'"""""`. /,  JOE  ,\//  COOL!  \\`-._______.-'___`. | .'___ (______|______)|                   __\--__|_ 
II=======OOOOO[/02 ___|           _____\______|/-----. /____________________|              \◎◎◎◎◎◎◎◎⊙/ ~~~~~~~~~~~~~~~~ 

搞错了,再来(以上图案纯属娱乐,勿怪勿怪)

import turtle
import time# 实现清屏
def clear_screen():turtle.penup()             #画笔抬起turtle.goto(0,0)        #定位到(0,0)turtle.color('white')turtle.pensize(800)         #画笔粗细turtle.pendown()           #画笔落下turtle.setheading(0)        #设置朝向turtle.fd(300)       #前进turtle.bk(600)      #后退# 初始化海龟的位置
def go_start(x, y, state):turtle.pendown() if state else turtle.penup()turtle.goto(x, y)#画线,state为真时海龟回到原点,为假时不回到原来的出发点
def draw_line(length, angle, state):turtle.pensize(1)turtle.pendown()turtle.setheading(angle)turtle.fd(length)turtle.bk(length) if state else turtle.penup()turtle.penup()# 画出发射爱心的小人
def draw_people(x, y):turtle.penup()turtle.goto(x, y)turtle.pendown()turtle.pensize(2)turtle.color('black')turtle.setheading(0)turtle.circle(35, 360)turtle.penup()turtle.pensize(3)turtle.setheading(90)turtle.fd(45)turtle.setheading(180)turtle.fd(20)turtle.setheading(0)turtle.fd(35)turtle.pendown()turtle.circle(4, 360)turtle.penup()turtle.goto(x, y)turtle.pensize(2)turtle.setheading(0)turtle.fd(20)turtle.setheading(90)turtle.fd(20)turtle.setheading(-90)turtle.pendown()turtle.circle(5, 180)turtle.penup()turtle.goto(x, y)turtle.setheading(-90)turtle.pendown()turtle.fd(20)turtle.setheading(0)turtle.fd(35)turtle.setheading(60)turtle.fd(10)turtle.penup()turtle.goto(x, y)turtle.setheading(-90)turtle.pendown()turtle.fd(40)turtle.setheading(0)turtle.fd(35)turtle.setheading(-60)turtle.fd(10)turtle.penup()turtle.goto(x, y)turtle.setheading(-90)turtle.pendown()turtle.fd(60)turtle.setheading(-135)turtle.fd(60)turtle.bk(60)turtle.setheading(-45)turtle.fd(30)turtle.setheading(-135)turtle.fd(35)turtle.penup()# 画爱心
def draw_heart(size):turtle.color('red', 'pink')turtle.pensize(2)turtle.pendown()turtle.setheading(150)turtle.begin_fill()turtle.fd(size)turtle.circle(size * -3.745, 45)turtle.circle(size * -1.431, 165)turtle.left(120)turtle.circle(size * -1.431, 165)turtle.circle(size * -3.745, 45)turtle.fd(size)turtle.end_fill()# 画箭羽
def draw_feather(size):angle = 30  # 箭的倾角feather_num = size // 6    # 羽毛的数量feather_length = size // 3     # 羽毛的长度feather_gap = size // 10     # 羽毛的间隔for i in range(feather_num):draw_line(feather_gap, angle + 180, False)  # 箭柄,不折返draw_line(feather_length, angle + 145, True)  # 羽翼,要折返draw_line(feather_length, angle + 145, False)draw_line(feather_num * feather_gap, angle, False)draw_line(feather_length, angle + 145 + 180, False)for i in range(feather_num):draw_line(feather_gap, angle + 180, False)   # 箭柄,不折返draw_line(feather_length, angle - 145, True)    # 羽翼,要折返draw_line(feather_length, angle - 145, False)draw_line(feather_num * feather_gap, angle, False)draw_line(feather_length, angle - 145 + 180, False)# 画一箭穿心,最后箭的头没有画出来,用海龟来代替
def arrow_heart(x, y, size):go_start(x, y, False)draw_heart(size * 1.15)turtle.setheading(-150)turtle.penup()turtle.fd(size * 2.2)draw_heart(size)turtle.penup()turtle.setheading(150)turtle.fd(size * 2.2)turtle.color('black')draw_feather(size)turtle.pensize(4)turtle.setheading(30)turtle.pendown()turtle.fd(size * 2)turtle.penup()turtle.setheading(29)turtle.fd(size * 5.7)turtle.color('black')turtle.pensize(4)turtle.pendown()turtle.fd(size * 1.2)#显示倒数3,2,1
def draw_0(i):turtle.speed(0)turtle.penup()turtle.hideturtle()  # 隐藏箭头显示turtle.goto(-50, -100)turtle.color('red')write = turtle.write(i, font=('宋体', 200, 'normal'))time.sleep(1)# 显示文字
def draw_1():turtle.penup()turtle.hideturtle()    #隐藏箭头显示turtle.goto(-250, 0)turtle.color('red')write = turtle.write('臭猪猪,接招', font=('宋体', 60, 'normal'))time.sleep(2)# 显示发射爱心的小人儿
def draw_2():turtle.speed(3)draw_people(-250, 20)turtle.penup()turtle.goto(-150, -30)draw_heart(14)turtle.penup()turtle.goto(-20, -60)draw_heart(25)turtle.penup()turtle.goto(205, -100)draw_heart(43)turtle.hideturtle()time.sleep(2)def draw_3():turtle.penup()turtle.hideturtle()  # 隐藏箭头显示turtle.goto(-220, 50)turtle.color('red')write = turtle.write('💕不离', font=('宋体', 60, 'normal'))turtle.penup()turtle.goto(0, -50)write = turtle.write('不弃💕', font=('宋体', 60, 'normal'))time.sleep(2)# 显示一箭穿心
def draw_4():turtle.speed(10)turtle.penup()turtle.goto(-210, -200)turtle.color('blue')turtle.pendown()turtle.write('YRB      CQZ', font=('wisdom', 50, 'normal'))turtle.speed(1)turtle.penup()turtle.color("red")turtle.goto(-31, -200)turtle.write('❤',font=('wisdom', 50, 'normal'))arrow_heart(20, -60, 51)turtle.showturtle()number=[3,2,1]    #储存显示界面倒数数字1,2,3if __name__ == '__main__':turtle.setup(900, 500)     #调画布的尺寸for i in number:draw_0(i)clear_screen()draw_1()clear_screen()draw_2()clear_screen()draw_3()clear_screen()draw_4()turtle.done()

部分效果展示:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

turtle模块知识区:

       以上就是本文的核心了,你有没有被惊艳到呢(略微有点夸张ಠᴗಠ),好了,在本文的最后还是介绍一下所用到的模块吧

首先呢,介绍一下turtle模块吧:
       turtle模块,也称海龟模块。之所以叫海龟模块呢,是因为运用此模块画图时,就感觉像一只小海龟,在沙滩上爬呀爬,然后留下了痕迹(可以闭上眼想象一下,哈哈哈)
       那么,关于turtle模块有哪些知识点呢?
       如果想实现乌龟在海滩爬行,那么除了乌龟还需要什么呢,没错,就是海滩了。因为常常把画笔(箭头)比作乌龟,所以画布(canvas)就相当于海滩了。不仅如此,我们还可以自定义画布的大小和初始位置
如何设置画布大小:

turtle.screensize(canvwidth=None, canvheight=None, bg=None)

参数:

canvwidth:画布的宽度(单位:像素)
canvheight:画布的高度(单位:像素)
bg:背景颜色
若不设置值,默认参数为(400,300,None) 用Pen创建的就是默认大小

如何设置画布位置:

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

参数:

width,height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
(startx,starty):这一坐标表示矩形窗口左上角顶点的位置。如果为空,则窗口位于屏幕中心

       介绍完画布呢,就该介绍画笔了吧,然而操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种是运动命令,一种是画笔控制命令
所谓控制命令就是控制画笔向什么方向移动,向什么方向转动,抬起画笔还是放下画笔等,而运动命令呢,就是形如画笔向前移动多少,后退多少,转多少角度等,如下:

turtle.pendown() 移动时绘制图形,缺省时也为绘制

turtle.penup() 移动时不绘制图形,提起笔,用于另起一个地方绘制时用

turtle.setheading(degree) 海龟朝向(:degree代表角度)

turtle.pensize(width) 画笔的宽度

turtle.pencolor(colorstring) 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色(RGB、字符串)

turtle.fillcolor(colorstring) 绘制图形的填充颜色

turtle.color(color1, color2) 同时设置pencolor=color1,fillcolor=color2

turtle.filling() 返回当前是否在填充状态

turtle.begin_fill() 准备开始填充图形

turtle.end_fill() 填充完成;

turtle.hideturtle() 隐藏箭头显示;

turtle.showturtle() 与hideturtle()函数对应

turtle.reset() 恢复所有设置

turtle.forward(distance) 向当前画笔方向移动distance像素长

turtle.backward(distance) 向当前画笔相反方向移动distance像素长度

turtle.right(degree) 向右转动多少度

turtle.left(degree) 向左转动多少度

turtle.goto(x,y) 将画笔移动到坐标为(x,y)的位置

turtle.stamp() 绘制当前图形

turtle.speed(speed) 设置画笔的速度,speed属于[0, 10]区间的整数,数字越大速度越快

turtle.circle() 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

turtle.clear() (全局)清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset() (全局)清空窗口,重置turtle状态为起始状态

turtle.undo() (全局)撤销上一个turtle动作

turtle.isvisible() (全局)返回当前turtle是否可见

stamp() (全局)复制当前图形

       结合上述代码与这些函数方法应该可以学会turtle模块了吧,差不多文章到这里就结束了!最后呢,希望大家

                  ,;,,;,;;'(    马__      ,;;' ' \   ┇/'  '\'~~'~' \ /'\.),;(      )    /  |.,;' \    /-.,,(   ) \     成) /       ) / )|||        ||  \)(_\       (_\

✿✿ヽ(°▽°)ノ✿撒花~

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

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

相关文章

【OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声

【OpenCV 例程200篇】 系列,持续更新中… 【OpenCV 例程200篇 总目录-202205更新】 【OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声 2. 噪声模型 数字图像中的噪声源主要来自图像获取和传输过程。在获取图像时,光照水平和传感器温度影响图像中…

H5 炫酷导航

使用H5和CSS制作非常炫酷的旋转标题栏。 原理分析 1.使用ul(无序列表) 2.圆形边框样式 3.透明度的设置 4.边框阴影的添加 5.li去掉前面的圆点 效果演示 初始样式 旋转动画 旋转完毕 代码演示 1 CSS样式 <style>* {margin: 0;padding: 0;}body {background: url(…

超详细VSCode安装教程(Windows)

博主的VSCode专栏&#xff1a; 分享使用VS Code的基本操作与各种技巧 下载 官网下载页面&#xff1a;https://code.visualstudio.com/Download 请根据电脑的系统与所需版本点击下载链接&#xff08;一般情况下点击Windows按钮即可&#xff09; 安装 本文成于2020年4月21日&…

【OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声

【OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2. 噪声模型 数字图像中的噪声源主要来自图像获取和传输过程。在获取图像时&#xff0…

去掉li前面的圆点

在HTML中使用无序列表ul li的时候通常前面会出现一个圆点&#xff0c;那么如何把这个圆点去掉呢&#xff1f;&#xff1f;&#xff1f; 在 li 里使用&#xff1a; list-style: none; 案列演示 没有使用list-style: none; 使用list-style: none; 示例代码 <!DOCTYPE h…

自定义你的VSCode:主题、文件图标、快捷键、设置、schema、插件

推荐自己的专栏&#xff1a; 超详细VSCode安装教程&#xff08;Windows&#xff09; 请记住一点&#xff0c;VSCode中的一切快捷键操作都可以在控制面板中输入对应的命令来完成&#xff0c;并且常用命令还可以在菜单栏中找到&#xff0c;命令其实就是简单的英文词语&#xff0c…

【OpenCV 例程200篇】93. 噪声模型的直方图

【OpenCV 例程200篇】93. 噪声模型的直方图 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2. 噪声模型 数字图像中的噪声源主要来自图像获取和传输过程。在获取图像时&#xff0c;光照水平和…

删除a标签下面的横线

在HTML中我们经常会使用a标签跳转链接&#xff0c;但是会发现a标签下面出现一个横线特别难看&#xff0c;给大家一种删除a标签下面横线的方法。 删除a标签下面横线使用&#xff1a; text-decoration: none; 效果示例 代码示例 <!DOCTYPE html> <html><head…

【OpenCV 例程200篇】94. 算术平均滤波器

【OpenCV 例程200篇】94. 算术平均滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 仅噪声存在的空间滤波图像复原 当一幅图像中唯一存在的退化是噪声时&#xff0c;退化模型简化为&a…

正则表达式表单验证

使用正则表达式验证表单中输入的内容是否符合格式。 原理分析&#xff1a; 1.失去焦点和获取焦点 2.获取内容 3.判断是否符合 4.不符合显示错误号符合显示对号 效果演示 代码演示 <!DOCTYPE html> <html> <head lang"en"><meta charset"…

罗盘时钟

用HTML和CSS以及JavaScript实现罗盘时钟。 原理分析&#xff1a; 1.年月日时分秒的定义 2.定时器的使用 3.分钟到小时如何变化 4.定义数组存放内容 效果演示 初始状态 时间显示 代码展示 HTML内容 <!DOCTYPE html> <html lang"en"> <head>…

【OpenCV 例程200篇】95. 几何均值滤波器

【OpenCV 例程200篇】95. 几何均值滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 仅噪声存在的空间滤波图像复原 当一幅图像中唯一存在的退化是噪声时&#xff0c;退化模型简化为&a…

MATLAB中有关矩阵特征值和特征向量的计算

在MATLAB语言中&#xff0c;求矩阵的特征值和特征向量需要用到两个函数&#xff1a;eig()、diag() diag():可生成一个对角矩阵 调用eig函数的格式为&#xff1a; [x,y]eig(A) 其中矩阵y的对角线元素存储的是A的所有特征值&#xff0c;且从小到大排列&#xff1b;而矩阵x的每一…

input输入框内容只读

有的时候一些固定的数据只能观看而无法修改&#xff0c;那麽我们如何设置呢&#xff1f; 设置input输入框内容的只读性在此我总结了两个方法。 效果演示 确实进行了选中修改添加文本内容等操作&#xff0c;但是数据始终是无法修改的。 方法一 readonly属性 使用方法 <…

【OpenCV 例程200篇】96. 谐波平均滤波器

【OpenCV 例程200篇】96. 谐波平均滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 仅噪声存在的空间滤波图像复原 当一幅图像中唯一存在的退化是噪声时&#xff0c;退化模型简化为&a…

SQL Server第一次上机操作实例:用sql语句创建BBS数据库、表、约束以及建立其数据库关系图

训练技能点&#xff1a; 学会使用sql语句创建数据库、表、约束、建立数据库关系图 使用到的软件&#xff1a;SQL Server2008 代码如下&#xff1a; use master go if exists(select * from sysdatabases where nameBBS) --判断BBS库是否存在&#xff0c;若存在则先删除drop…

【OpenCV 例程200篇】97. 反谐波平均滤波器

【OpenCV 例程200篇】97. 反谐波平均滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 仅噪声存在的空间滤波图像复原 当一幅图像中唯一存在的退化是噪声时&#xff0c;退化模型简化为…

xampp命令行连接MySql数据库

使用xampp工具连接MySql数据库。 对于MySql数据库的操作通常是使用命令行进行有关操作的&#xff08;增删改查&#xff09; 1.打开xampp 2.点击打开MySql后面的Start,同样点击打开Apache后面的Start 这时候MySql服务就打开了 3.接下来打开我们的命令行&#xff0c;点击右边…

【OpenCV 例程 200篇】98. 统计排序滤波器

【OpenCV 例程 200篇】98. 统计排序滤波器 欢迎关注 『OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3.5 统计排序滤波器 统计排序滤波器是空间滤波器&#xff0c;其响应是基于滤波器邻域中的像素值的…

避坑!!!Matlab中文版下载地址、详细讲解Matlab中文版的下载、安装

免费下载windows Matlab2016中文版、Matlab2017中文版、Matlab2018中文版、Matlab2019中文版、Matlab2020中文版 如下图&#xff1a; 下载地址&#xff1a; 百度网盘链接&#xff1a;****&#xff08;请私信或评论我&#xff0c;过不了审&#xff09; 提取码&#xff1a;*…