网络编程
位置:首页>> 网络编程>> Python编程>> Python使用turtle模块绘制爱心图案

Python使用turtle模块绘制爱心图案

作者:toMontain  发布时间:2022-07-31 06:46:26 

标签:python,turtle,爱心

程序员的浪漫,你懂吗?

今天使用python小海龟实现爱心图案的绘制,代码如下:


import turtle
import time

# 清屏函数
def clear_all():
   turtle.penup()
   turtle.goto(0, 0)
   turtle.color('white')
   turtle.pensize(800)
   turtle.pendown()
   turtle.setheading(0)
   turtle.fd(300)
   turtle.bk(600)

# 重定位海龟的位置
def go_to(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_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 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_arrow(size):
   angle = 30
   turtle.color('black')
   draw_feather(size)
   turtle.pensize(4)
   turtle.setheading(angle)
   turtle.pendown()
   turtle.fd(size*2)

# 一箭穿心
# 箭的头没有画出来,而是用海龟来代替
def arrow_heart(x, y, size):
   go_to(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)
   draw_arrow(size)

# 画出发射爱心的小人
def draw_people(x, y):
   turtle.penup()
   turtle.goto(x, y)
   turtle.pendown()
   turtle.pensize(2)
   turtle.color('black')
   turtle.setheading(0)
   turtle.circle(60, 360)
   turtle.penup()
   turtle.setheading(90)
   turtle.fd(75)
   turtle.setheading(180)
   turtle.fd(20)
   turtle.pensize(4)
   turtle.pendown()
   turtle.circle(2, 360)
   turtle.setheading(0)
   turtle.penup()
   turtle.fd(40)
   turtle.pensize(4)
   turtle.pendown()
   turtle.circle(-2, 360)
   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 page0():
   turtle.penup()
   turtle.goto(-350, 0)
   turtle.color('black')
   turtle.write('专属于我们的情人节', font=('宋体', 60, 'normal'))
   time.sleep(3)

# 第二个画面,显示发射爱心的小人
def page1():
   turtle.speed(10)
   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(250, -100)
   draw_heart(45)
   turtle.hideturtle()
   time.sleep(3)

# 最后一个画面,一箭穿心
def page2():
   turtle.speed(1)
   turtle.penup()
   turtle.goto(-200, -200)
   turtle.color('blue')
   turtle.pendown()
   turtle.write('ZBT       CJH', font=('wisdom', 50, 'normal'))
   turtle.penup()
   turtle.goto(0, -180)
   draw_heart(10)
   arrow_heart(20, -60, 51)
   turtle.showturtle()

def main():
   turtle.setup(900, 500)
   page0()
   clear_all()
   page1()
   clear_all()
   page2()
   turtle.done()

main()

运行截图如下图所示,其中的姓名缩写可以自行修改。

Python使用turtle模块绘制爱心图案

Python使用turtle模块绘制爱心图案

来源:https://blog.csdn.net/qq_43884946/article/details/120047657

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com