一箭穿心~❤

这段代码使用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()
相关推荐
HyperAI超神经13 小时前
【vLLM 学习】Prithvi Geospatial Mae
人工智能·python·深度学习·学习·大语言模型·gpu·vllm
逻极13 小时前
Python MySQL防SQL注入实战:从字符串拼接的坑到参数化查询的救赎
python·mysql·安全·sql注入
赫凯13 小时前
【强化学习】第一章 强化学习初探
人工智能·python·强化学习
Amewin13 小时前
window 11 安装pyenv-win管理不同的版本的python
开发语言·python
小鸡吃米…13 小时前
Python编程语言面试问题二
开发语言·python·面试
eve杭14 小时前
AI、大数据与智能时代:从理论基石到实战路径
人工智能·python·5g·网络安全·ai
Honmaple14 小时前
中国四级城市联动数据,包含港澳台,内含json , sql , python 脚本
python·sql·json
BoBoZz1914 小时前
Curvatures 曲率的计算、边缘曲率的调整以及曲率、颜色的映射
python·vtk·图形渲染·图形处理
少吃零食多运动15 小时前
【Jupyter notebook修改工作目录】
python·jupyter
Swizard15 小时前
别买树莓派了!3步教你在安卓手机上跑通 CPython + PaddleOCR,打造随身 AI 识别终端
python·ai·移动开发