大家好,又见面了,我是你们的朋友全栈君。
本文导航:若您是直接想要代码,那么请您移步代码区,复制粘贴即可;若您是想了解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,3
if __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模块了吧,差不多文章到这里就结束了!最后呢,希望大家
,;,,;
,;;'( 马
__ ,;;' ' \ ┇
/' '\'~~'~' \ /'\.) 到
,;( ) / |. ┇
,;' \ /-.,,( ) \ 成
) / ) / )| ┇
|| || \) 功
(_\ (_\
✿✿ヽ(°▽°)ノ✿撒花~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154082.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...