• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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库的基础语法使用
    • Python turtle实现贪吃蛇游戏
    • python基于turtle绘制几何图形
    • python实例小练习之Turtle绘制南方的雪花
    上一篇:python计算分段函数值的方法
    下一篇:Django零基础入门之自定义过滤器及模板中的使用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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