利用python生成一個終極復(fù)雜的跳動小紅心動畫
更新時間:2026年03月27日 09:39:18 作者:水月清輝
這篇文章主要為大家詳細(xì)介紹了一個使用Python內(nèi)置turtle模塊實現(xiàn)的跳動愛心動畫特效,無需安裝任何第三方庫,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
跳動 + 光暈拖影 + 粒子飄散 + 顏色漸變 + 呼吸閃爍 + 上下漂浮
全是流暢動畫,復(fù)制就能跑,Python 自帶 turtle 實現(xiàn),不用裝任何庫!
終極復(fù)雜動畫:跳動小紅心
import turtle
import math
import random
import time # 【修復(fù)1】補充導(dǎo)入 time 模塊
# ================= 配置參數(shù) =================
WIDTH, HEIGHT = 800, 800
PARTICLE_COUNT = 100 # 粒子數(shù)量,形成浪漫滿天星效果
HEART_STEP = 3 # 【優(yōu)化2】增加繪制步長,減少計算量 (原1,即360個點)
# 窗口設(shè)置
screen = turtle.Screen()
screen.title("?? 終極特效跳動愛心 (優(yōu)化版) ??")
screen.bgcolor("black")
screen.setup(WIDTH, HEIGHT)
screen.tracer(0) # 極速流暢動畫
# 主愛心畫筆
heart = turtle.Turtle()
heart.hideturtle()
heart.speed(0)
# 粒子系統(tǒng)(浪漫滿天星特效)
particles = []
class Particle:
def __init__(self):
self.t = turtle.Turtle()
self.t.hideturtle()
self.t.speed(0)
self.t.penup()
self.reset()
def reset(self):
# 擴大粒子分布范圍,形成滿天星效果
x = random.randint(-350, 350)
y = random.randint(-350, 350)
self.t.goto(x, y)
self.size = random.randint(1, 4) # 更小的粒子,更精致
self.speed_x = random.uniform(-1, 1) # 減慢速度,更浪漫
self.speed_y = random.uniform(-1, 1)
self.life = random.randint(40, 80) # 增加生命周期
# 豐富的彩色粒子:粉色、紫色、藍(lán)色、白色、金色
self.color = random.choice([
"#ff0033", "#ff3366", "#ff6699", "#ff99cc", # 粉色系
"#9900ff", "#cc66ff", "#ffccff", # 紫色系
"#0066ff", "#66ccff", "#ccffff", # 藍(lán)色系
"#ffffff", "#ffff99", "#ffcc00", # 白色和金色
"#ff6666", "#ffcc66" # 暖色系
])
def update(self):
self.life -= 1
if self.life <= 0:
self.reset()
return
x, y = self.t.position()
self.t.goto(x + self.speed_x, y + self.speed_y)
self.t.clear()
# 添加閃爍效果
if random.random() < 0.1: # 10%的概率改變透明度(通過大小模擬)
current_size = self.size if random.random() > 0.5 else self.size * 0.5
else:
current_size = self.size
self.t.color(self.color)
self.t.dot(current_size)
# 創(chuàng)建粒子
for _ in range(PARTICLE_COUNT):
particles.append(Particle())
# 數(shù)學(xué)公式畫標(biāo)準(zhǔn)愛心(增加旋轉(zhuǎn)邏輯)
def draw_heart(size, angle, color):
heart.penup()
heart.goto(0, 0)
heart.pendown()
heart.color(color)
heart.begin_fill()
# 預(yù)計算旋轉(zhuǎn)參數(shù)
rad_angle = math.radians(angle)
cos_a = math.cos(rad_angle)
sin_a = math.sin(rad_angle)
# 【優(yōu)化3】使用 range(0, 360, HEART_STEP) 減少循環(huán)次數(shù)
for i in range(0, 360, HEART_STEP):
rad = math.radians(i)
# 愛心標(biāo)準(zhǔn)公式
x = 16 * math.sin(rad) ** 3
y = 13 * math.cos(rad) - 5 * math.cos(2 * rad) - 2 * math.cos(3 * rad) - math.cos(4 * rad)
# 【修復(fù)2】應(yīng)用旋轉(zhuǎn)矩陣公式
# x_new = x * cos(θ) - y * sin(θ)
# y_new = x * sin(θ) + y * cos(θ)
x_rot = x * cos_a - y * sin_a
y_rot = x * sin_a + y * cos_a
heart.goto(x_rot * size, y_rot * size)
heart.end_fill()
# 動畫主循環(huán)
frame = 0
try:
while True:
frame += 1
heart.clear()
# 更新所有粒子
for p in particles:
p.update()
# ===================== 動畫參數(shù)計算 =====================
# 1. 愛心大?。毫鲿程鴦?
beat = math.sin(frame / 4)
size = 12 + 4 * beat
# 2. 取消旋轉(zhuǎn),保持愛心正面朝向
rotate = 0
# 3. 上下漂浮
y_float = 8 * math.sin(frame / 6)
# 4. 顏色漸變
r = 255
g = int(40 + 80 * abs(math.sin(frame / 7)))
b = int(60 + 90 * abs(math.sin(frame / 9)))
main_color = f'#{r:02x}{g:02x}{b:02x}'
# 5. 繪制光暈和主心(取消旋轉(zhuǎn),增強立體感)
# 通過多層疊加和顏色漸變營造立體效果
# 外層光暈(深紅色,最大)
heart.penup()
heart.goto(0, y_float) # 應(yīng)用漂浮
heart.pendown()
draw_heart(size * 1.6, 0, "#330000")
# 中層發(fā)光(中等紅色,中等大小)
heart.penup()
heart.goto(0, y_float)
heart.pendown()
draw_heart(size * 1.2, 0, "#660022")
# 主愛心(漸變色,核心)
heart.penup()
heart.goto(0, y_float)
heart.pendown()
draw_heart(size, 0, main_color)
screen.update()
time.sleep(0.02) # 【修復(fù)3】使用 time.sleep
except turtle.Terminator:
print("程序已關(guān)閉")效果預(yù)覽
這個終極版將呈現(xiàn):
- 真實呼吸感的心跳
- 100層發(fā)光光暈擴散
- 100顆彩色星星飄散
- 紅粉色自動漸變
- 溫柔上下漂浮
- 60FPS絲滑運行
展示效果:

到此這篇關(guān)于利用python生成一個終極復(fù)雜的跳動小紅心動畫的文章就介紹到這了,更多相關(guān)python生成動畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Numpy實現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差詳解
NumPy(Numerical Python)是Python的一種開源的數(shù)值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多。本文主要介紹用NumPy實現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差,感興趣的小伙伴可以了解一下2021-11-11

