一箭穿心~❤

这段代码使用turtle库绘制了一个经典的 "一箭穿心" 图案,包含两颗爱心、一支穿心箭和署名文字签名,整体逻辑清晰,充满浪漫寓意。以下是详细分析:

1. 导入库

python 复制代码
from turtle import *  # 导入turtle库所有功能(用于绘图)
from time import sleep  # 导入sleep函数(代码中未实际使用,可删除)

2. 核心函数解析

(1)go_to(x, y):移动画笔位置

python 复制代码
def go_to(x, y):
    up()    # 抬起画笔(移动时不绘图)
    goto(x, y)  # 移动到坐标(x, y)
    down()  # 放下画笔(准备绘图)
  • 作用:快速定位画笔到指定坐标,避免移动过程中留下多余线条。

(2)爱心绘制相关函数(核心)

这组函数通过组合直线和弧线,绘制出爱心形状:

  • big_Circle(size):绘制爱心外侧的大弧线
python 复制代码
def big_Circle(size):
    speed(1)
    for i in range(150):  # 循环150次,每次移动size距离并右转0.3°,形成大弧度曲线
        forward(size)
        right(0.3)
scss 复制代码
          right(0.3)
  • small_Circle(size):绘制爱心内侧的小弧线
python 复制代码
def small_Circle(size):
   speed(1)
   for i in range(210):  # 循环210次,每次移动size距离并右转0.786°,形成小弧度曲线
       forward(size)
       right(0.786)

line(size):绘制爱心中间的直线(连接两侧弧线)

python 复制代码
def line(size):
    speed(1)
    forward(51 * size)  # 直线长度为51倍的size

heart(x, y, size):组合上述元素,绘制完整爱心

python 复制代码
def heart(x, y, size):
    go_to(x, y)  # 移动到爱心起点
    left(150)    # 左转150°,调整初始角度
    begin_fill()  # 开始填充颜色(粉色)
    # 绘制右侧半颗心
    line(size)       # 画右侧直线
    big_Circle(size) # 画右侧大弧线
    small_Circle(size) # 画右侧小弧线
    # 转向绘制左侧半颗心
    left(120)        # 左转120°,切换方向
    small_Circle(size) # 画左侧小弧线
    big_Circle(size) # 画左侧大弧线
    line(size)       # 画左侧直线(闭合爱心)
    end_fill()      # 结束填充
    • 原理:通过对称的弧线和直线组合,形成心形,并用粉色填充。

(3)箭相关函数

  • arrow():绘制穿心箭的箭杆
python 复制代码
def arrow():
    pensize(10)  # 箭杆较粗(10像素)
    setheading(0)  # 画笔朝向x轴正方向
    go_to(-400, 0)  # 移动到左侧起点
    left(15)    # 左转15°,使箭倾斜穿过爱心
    forward(150)  # 绘制左侧箭杆
    go_to(339, 178)  # 移动到右侧箭杆起点(穿过爱心的位置)
    forward(150)  # 绘制右侧箭杆

arrowHead():绘制箭头

python 复制代码
def arrowHead():
    pensize(1)  # 箭头线条较细
    speed(1)
    color('red', 'red')  # 箭头颜色为红色(线条+填充)
    begin_fill()
    # 绘制三角形箭头
    left(120)
    forward(20)
    right(150)
    forward(35)
    right(120)
    forward(35)
    right(150)
    forward(20)
    end_fill()

(4)main():主函数(程序入口)

python 复制代码
def main():
    pensize(2)  # 爱心线条粗细为2像素
    color('red', 'pink')  # 线条颜色红色,填充颜色粉色
    # 绘制两颗爱心
    heart(200, 0, 1)          # 第一颗心(位置(200,0),大小1)
    setheading(0)             # 重置画笔方向为x轴正方向
    heart(-80, -100, 1.5)     # 第二颗心(位置(-80,-100),大小1.5,比第一颗大)
    # 绘制箭
    arrow()                   # 绘制箭杆
    arrowHead()               # 绘制箭头
    # 添加文字签名
    go_to(400, -300)
    write("author:520Python", move=True, align="left", font=("宋体", 30, "normal"))
    done()  # 保持绘图窗口不关闭

main()  # 执行主函数

3. 整体效果

运行代码后,会绘制出: 两颗粉色爱心(一大一小,位置不同) 一支红色箭头的箭,倾斜穿过两颗爱心 右下角文字 "author:520Python"

4. 特点与可优化点

特点:通过基础几何图形(直线、弧线)组合出复杂图案,逻辑对称,适合表达浪漫主题。

代码

python 复制代码
from turtle import *
from time import sleep

def go_to(x, y):
   up()
   goto(x, y)
   down()


def big_Circle(size):  #函数用于绘制心的大圆
   speed(1)
   for i in range(150):
       forward(size)
       right(0.3)

def small_Circle(size):  #函数用于绘制心的小圆
   speed(1)
   for i in range(210):
       forward(size)
       right(0.786)

def line(size):
   speed(1)
   forward(51*size)

def heart( x, y, size):
   go_to(x, y)
   left(150)
   begin_fill()
   line(size)
   big_Circle(size)
   small_Circle(size)
   left(120)
   small_Circle(size)
   big_Circle(size)
   line(size)
   end_fill()

def arrow():
   pensize(10)
   setheading(0)
   go_to(-400, 0)
   left(15)
   forward(150)
   go_to(339, 178)
   forward(150)

def arrowHead():
   pensize(1)
   speed(1)
   color('red', 'red')
   begin_fill()
   left(120)
   forward(20)
   right(150)
   forward(35)
   right(120)
   forward(35)
   right(150)
   forward(20)
   end_fill()


def main():
   pensize(2)
   color('red', 'pink')
   #getscreen().tracer(30, 0) #取消注释后,快速显示图案
   heart(200, 0, 1)          #画出第一颗心,前面两个参数控制心的位置,函数最后一个参数可控制心的大小
   setheading(0)             #使画笔的方向朝向x轴正方向
   heart(-80, -100, 1.5)     #画出第二颗心
   arrow()                   #画出穿过两颗心的直线
   arrowHead()               #画出箭的箭头
   go_to(400, -300)
   write("author:520Python", move=True, align="left", font=("宋体", 30, "normal"))
   done()

main()
相关推荐
张张123y2 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
happylifetree7 小时前
Python67:核心语法-函数进阶-参数类型(函数作为参数)
python
小羊没烦恼!7 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
quantdash_cc8 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
镜子AI8 小时前
镜子AI工程实践:用 Python 做 GEO 实体一致性审计,并自动生成 JSON-LD 结构化数据
人工智能·python·json
2601_9628857212 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python
李航198312 小时前
DeepSeekAI建模三 - 实战建模一组柜子
人工智能·python·计算机视觉·ai·ai编程
严谨的麻辣烫13 小时前
静态代理 IP 的出口一致性如何验证?Python 请求检测与异常排查
开发语言·python·http·网络安全
我命由我1234514 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11
FITA阿泽要努力14 小时前
Fork Agent:共享上下文的艺术
开发语言·python·agent