import turtle
turtle.setup(1200, 600) #窗口大小
#画心
turtle.color("black", "red")
turtle.pensize(2)
turtle.speed(10)
turtle.up() #提起画笔
turtle.goto(0, 50)
turtle.down()
def draw_heart(r, angle=45):
"""
:param r:桃心圆的半径
:param angle:起始画笔角度
:return:返回桃心底部尖点坐标
"""
turtle.begin_fill() #开始填充
turtle.seth(0)
turtle.seth(angle) #设置画笔方向
turtle.circle(-r, 180) #逆时针画半圆
turtle.fd(2 * r) #向前移动
turtle.begin_poly() #记录画笔的位置
x, y = turtle.get_poly()[0] #获取画笔的位置
turtle.right(90) #逆时针旋转画笔
turtle.fd(2 * r) #向前移动
turtle.circle(-r, 180)
turtle.end_fill() #填充结束
return x, y
#画桃心
x_y = []
start_x = 0
for _ in range(4):
turtle.goto(start_x, 50)
turtle.down() #放下笔
x_y.append(draw_heart(8))
start_x += 50
turtle.up() #提起画笔
#画叶子
def draw_flower(x, y):
"""
画桃心下的花
:param x:桃心尖底的x轴
:param y:桃心尖底的y轴
:return:
"""
turtle.up()
turtle.goto(x, y)
turtle.seth(0) #恢复画笔向右
turtle.seth(-90)
turtle.down()
turtle.fd(60)
turtle.goto(x, y)
turtle.right(60)
turtle.fd(20)
turtle.left(90)
turtle.fd(10)
turtle.left(120)
turtle.fd(20)
turtle.up()
turtle.goto(x, y)
turtle.seth(0) #恢复画笔向右
turtle.seth(-115)
turtle.down()
turtle.fd(25)
turtle.up()
turtle.goto(x, y)
turtle.seth(0) #恢复画笔向右
turtle.seth(-10)
turtle.down()
turtle.fd(20)
turtle.right(90)
turtle.fd(8)
turtle.right(120)
turtle.fd(20)
turtle.goto(x, y)
turtle.seth(-60)
turtle.fd(20)
turtle.up()
for x, y in x_y:
draw_flower(x, y)
#画小人物
turtle.up()
turtle.goto(-200, -50)
turtle.down()
turtle.seth(0) #恢复画笔向右,好控制方向
turtle.seth(45)
turtle.fd(40)
turtle.begin_poly() #记录画笔的位置,脚叉的位置
x, y = turtle.get_poly()[0] #获取画笔的位置
turtle.right(90)
turtle.fd(35)
turtle.goto(x, y)
turtle.left(135)
turtle.fd(90)
turtle.seth(0)
turtle.circle(30) #画圆
turtle.goto(x, y + 60) #手的位置
turtle.fd(40)
turtle.circle(30, 70) #画圆,拿花手的弧度
turtle.seth(0)
turtle.up()
turtle.goto(x, y + 50) #手的位置
turtle.down()
turtle.fd(50)
turtle.begin_poly() #记录手的位置等下画花需要用
f_x, f_y = turtle.get_poly()[0]
#眼睛
turtle.up()
turtle.goto(x - 15, y + 120) #眼睛的位置
turtle.down()
turtle.pensize(4)
turtle.seth(45)
turtle.circle(-10, 70) #画圆弧,拿花手的弧度
turtle.dot(10) #眼睛画圆
turtle.up()
turtle.goto(x + 10, y + 120) #眼睛的位置
turtle.down()
turtle.pensize(4)
turtle.seth(45)
turtle.circle(-10, 70) #画圆弧,拿花手的弧度
turtle.dot(10) #眼睛画圆
turtle.up()
#嘴巴
turtle.goto(x, y + 105) #眼睛的位置
turtle.down()
turtle.circle(10, 70) #画圆弧,拿花手的弧度
#画里拿的花叶子部分
turtle.pensize(3) #将画笔大小
turtle.up()
turtle.goto(f_x, f_y) #手的位置
turtle.left(20)
turtle.down()
turtle.fd(60)
turtle.pensize(2) #将画笔调小
turtle.begin_poly() #记录手的位置等下画花需要用
x, y = turtle.get_poly()[0]
turtle.backward(80)
turtle.up()
turtle.goto(x, y)
turtle.down()
turtle.right(90)
turtle.fd(20)
turtle.right(90)
turtle.fd(8)
turtle.right(120)
turtle.fd(25)
turtle.right(200)
turtle.fd(25)
turtle.up()
turtle.goto(x, y)
turtle.down()
turtle.right(60)
turtle.fd(25)
turtle.goto(x, y)
turtle.right(40)
turtle.fd(25)
turtle.left(90)
turtle.fd(8)
turtle.left(110)
turtle.fd(25)
turtle.goto(f_x + 34, f_y + 75)
draw_heart(8, angle=20) #手里拿的桃心
#写文字
turtle.up()
turtle.goto(150, 200)
turtle.pencolor("PINK") #画笔颜色
turtle.write("TO:所有同学", font=("方正舒体", 30, "normal"))
turtle.goto(180,140)
turtle.write("送给棒棒的你", font=("方正舒体", 30, "normal"))
turtle.hideturtle()
turtle.mainloop()