一、效果先看
最终你会得到:
- 一个粉色动态爱心,在屏幕中央不停跳动
- 爱心会缩放、变色、发光,非常浪漫
- 窗口可关闭,代码干净、可直接运行
- 全程只用 Python 标准库 + 简单绘图
二、准备工作(超详细)
1. 安装 Python
如果你还没装 Python:
1. 打开官网:https://www.python.org/downloads/
2. 下载最新版本(3.8 及以上都可以)
3. 安装时一定要勾选 Add Python to PATH(把Python加入环境变量)
4. 安装完成后,打开 cmd/终端,输入:
plaintext
python --version
能显示版本号,就说明安装成功。
2. 选择代码编辑器
你可以用:
- IDLE(Python自带)
- VS Code
- PyCharm
- 甚至记事本
只要能新建 .py 文件并运行就行。
3. 本次用到的库
我们只用 turtle(Python内置绘图库),不需要额外安装,直接导入就能用。
三、完整代码(可直接复制运行)
我先把完整代码给你,后面逐行逐段详细讲解。
python
import turtle
import random
import time
# 1. 创建画布和画笔
screen = turtle.Screen()
screen.title("动态爱心")
screen.bgcolor("black")
screen.setup(width=800, height=600)
heart = turtle.Turtle()
heart.hideturtle()
heart.speed(0)
# 2. 爱心曲线公式
def heart_shape(t, size=1):
x = 16 * (sin(t) ** 3)
y = 13 * cos(t) - 5 * cos(2*t) - 2 * cos(3*t) - cos(4*t)
return x * size, y * size
# 3. 画单个爱心
def draw_heart(size, color):
heart.penup()
rad = 0
heart.goto(heart_shape(rad, size))
heart.pendown()
heart.color(color)
heart.begin_fill()
for _ in range(360):
rad += 0.1
x, y = heart_shape(rad, size)
heart.goto(x, y)
heart.end_fill()
# 4. 随机颜色
def random_color():
r = random.uniform(0.5, 1.0)
g = random.uniform(0.0, 0.4)
b = random.uniform(0.6, 1.0)
return (r, g, b)
# 5. 主循环:动态跳动
from math import sin, cos
try:
while True:
# 清屏
heart.clear()
# 动态大小(呼吸效果)
scale = 12 + 4 * sin(time.time() * 8)
# 随机粉色系
c = random_color()
# 画爱心
draw_heart(scale, c)
time.sleep(0.02)
except turtle.Terminator:
pass
四、逐行超详细讲解(最核心部分)
我会把每一段、每一行都讲清楚,让你真正理解,而不只是复制粘贴。
第一段:导入库
python
import turtle
import random
import time
- turtle :Python 内置绘图库,专门用来画图形、动画、小游戏。
- random :用来生成随机数,让爱心颜色随机变化。
- time :用来控制动画速度,实现“跳动”效果。
第二段:创建窗口
python
screen = turtle.Screen()
screen.title("动态爱心")
screen.bgcolor("black")
screen.setup(width=800, height=600)
- turtle.Screen() :创建一个绘图窗口。
- title("动态爱心") :窗口标题。
- bgcolor("black") :背景设为黑色,让爱心更显眼。
- setup(800,600) :窗口宽800、高600。
第三段:创建画笔
python
heart = turtle.Turtle()
heart.hideturtle()
heart.speed(0)
- Turtle() :创建一支画笔。
- hideturtle() :隐藏箭头,不然会看到箭头在屏幕上跑。
- speed(0) :最快速度,0是最快,10是快,1最慢。
第四段:爱心数学公式(最关键)
python
def heart_shape(t, size=1):
x = 16 * (sin(t) ** 3)
y = 13 * cos(t) - 5 * cos(2*t) - 2 * cos(3*t) - cos(4*t)
return x * size, y * size
这是标准爱心数学曲线,来自经典的“Heart Curve”。
- t 是角度
- x, y 是坐标
- size 用来放大缩小
只要循环画出这条曲线上的点,自动连成爱心。
第五段:画单个爱心的函数
python
def draw_heart(size, color):
heart.penup()
rad = 0
heart.goto(heart_shape(rad, size))
heart.pendown()
heart.color(color)
heart.begin_fill()
for _ in range(360):
rad += 0.1
x, y = heart_shape(rad, size)
heart.goto(x, y)
heart.end_fill()
一步步解释:
1. penup() :抬笔,移动不留痕迹
2. 去到爱心起点
3. pendown() :落笔,开始画
4. color(color) :设置颜色
5. begin_fill() :开始填充颜色
6. 循环 360 次,画出完整爱心轮廓
7. end_fill() :结束填充,爱心变成实心
第六段:随机粉色系
python
def random_color():
r = random.uniform(0.5, 1.0)
g = random.uniform(0.0, 0.4)
b = random.uniform(0.6, 1.0)
return (r, g, b)
- RGB 颜色范围 0~1
- 红色高、绿色低、蓝色偏高 = 粉色/玫红/紫红
- 每次调用,都会得到不一样的粉色
第七段:动态跳动主循环
python
from math import sin, cos
try:
while True:
heart.clear()
scale = 12 + 4 * sin(time.time() * 8)
c = random_color()
draw_heart(scale, c)
time.sleep(0.02)
except turtle.Terminator:
pass
这是动画核心:
- while True :无限循环
- heart.clear() :每次循环先擦掉上一个爱心
- scale = 12 + 4*sin(...) :
- sin 函数在 -1 ~ 1 之间变化
- 所以大小在 8 ~ 16 之间来回变
- 这就是跳动、呼吸、缩放效果
- time.sleep(0.02) :每 0.02 秒刷新一次,非常流畅
五、如何运行(超详细步骤)
1. 打开你的编辑器(IDLE / VS Code / 记事本)
2. 新建文件,命名为 heart.py
3. 把上面完整代码复制进去
4. 保存
5. 运行:
- IDLE:按 F5
- VS Code:右键 → 运行
- 命令行: python heart.py
运行后你会看到:
- 黑色背景
- 中间一个粉色爱心
- 不停跳动、缩放、变色
- 关窗口即可退出
六、你可以自己修改的地方(教你自定义)
你可以随便改,我告诉你改哪里会有什么效果:
1. 改背景颜色
python
screen.bgcolor("black")
可改成:
- "white"
- "darkred"
- "#1a1a2e"
2. 改爱心大小
python
scale = 12 + 4 * sin(...)
把 12 改大 → 爱心更大
把 4 改大 → 跳动幅度更大
3. 改跳动速度
python
time.sleep(0.02)
数字越小越快,越大越慢。
4. 改颜色风格
python
r = random.uniform(0.5, 1.0)
g = random.uniform(0.0, 0.4)
b = random.uniform(0.6, 1.0)
- 红色高 → 偏红
- 绿色高 → 偏黄
- 蓝色高 → 偏紫
七、这个代码的原理总结(非常重要)
1. 用 数学爱心曲线 画出标准爱心形状
2. 用 while 循环 不断重绘
3. 用 sin 函数 让大小周期性变化 → 跳动
4. 用 随机颜色 让爱心不断变色
5. 用 清屏 + 重绘 实现动画效果
这就是最简单、最经典、最浪漫的 Python 动态爱心。
八、扩展:你可以继续升级的功能
如果你想更厉害,我可以教你:
- 爱心拖尾发光效果
- 爱心炸裂散开
- 爱心上显示文字(比如:I Love You)
- 多个爱心同时跳动
- 音乐播放 + 爱心同步跳动