Загрузка данных
import turtle
import math
import random
import time
# =========================
# НАСТРОЙКИ ОКНА
# =========================
screen = turtle.Screen()
screen.setup(1000, 750)
screen.bgcolor("#08000f")
screen.title("For Karina ❤️")
screen.tracer(0)
# =========================
# ФУНКЦИЯ СЕРДЦА
# =========================
def heart(t, scale=20):
x = 16 * math.sin(t) ** 3
y = (
13 * math.cos(t)
- 5 * math.cos(2 * t)
- 2 * math.cos(3 * t)
- math.cos(4 * t)
)
return x * scale, y * scale
# =========================
# ЗВЁЗДЫ НА ФОНЕ
# =========================
stars = []
for i in range(80):
star = turtle.Turtle()
star.hideturtle()
star.penup()
x = random.randint(-480, 480)
y = random.randint(-350, 350)
star.goto(x, y)
star.color("#ffffff")
size = random.randint(2, 5)
star.write(
"•",
align="center",
font=("Arial", size, "bold")
)
stars.append(star)
screen.update()
# =========================
# РИСОВАНИЕ СЕРДЦА
# =========================
heart_pen = turtle.Turtle()
heart_pen.hideturtle()
heart_pen.speed(0)
heart_pen.pensize(5)
heart_pen.color("#ff2b70")
x, y = heart(0)
heart_pen.penup()
heart_pen.goto(x, y)
heart_pen.pendown()
steps = 600
for i in range(steps + 1):
t = 2 * math.pi * i / steps
x, y = heart(t)
heart_pen.goto(x, y)
if i % 3 == 0:
screen.update()
time.sleep(0.008)
# =========================
# СВЕЧЕНИЕ СЕРДЦА
# =========================
glow = turtle.Turtle()
glow.hideturtle()
glow.speed(0)
for size, color in [
(10, "#ff0055"),
(7, "#ff2975"),
(4, "#ff72a0")
]:
glow.penup()
points = 180
for i in range(points + 1):
t = 2 * math.pi * i / points
x, y = heart(t, size / 20 * 20)
if i == 0:
glow.goto(x, y)
glow.pendown()
else:
glow.goto(x, y)
glow.penup()
glow.color(color)
screen.update()
time.sleep(0.15)
# =========================
# ПЛАВНОЕ ПОЯВЛЕНИЕ ТЕКСТА
# =========================
text = "I love you Karina"
writer = turtle.Turtle()
writer.hideturtle()
writer.penup()
# Эффект свечения
for i in range(8):
writer.clear()
writer.goto(0, -30)
# Чем дальше, тем ярче
colors = [
"#350010",
"#550018",
"#750025",
"#990033",
"#bb0045",
"#dd155c",
"#f53678",
"#ffffff"
]
writer.color(colors[i])
writer.write(
text,
align="center",
font=("Arial", 32, "bold")
)
screen.update()
time.sleep(0.15)
# =========================
# ЛЕТАЮЩИЕ СЕРДЕЧКИ
# =========================
small_hearts = []
for i in range(18):
h = turtle.Turtle()
h.hideturtle()
h.penup()
h.x = random.randint(-450, 450)
h.y = random.randint(-300, 300)
h.goto(h.x, h.y)
h.color(
random.choice([
"#ff2b70",
"#ff4f88",
"#ff79a3",
"#ffb3c9"
])
)
h.write(
"♥",
align="center",
font=("Arial", random.randint(12, 25), "bold")
)
small_hearts.append(h)
screen.update()
# =========================
# ФИНАЛЬНАЯ АНИМАЦИЯ
# =========================
for frame in range(40):
for h in small_hearts:
x = h.x
y = h.y + frame * 1.5
h.goto(x, y)
screen.update()
time.sleep(0.04)
# =========================
# ФИНАЛЬНАЯ НАДПИСЬ
# =========================
writer.clear()
writer.goto(0, -30)
writer.color("#ffffff")
writer.write(
"I love you Karina",
align="center",
font=("Arial", 34, "bold")
)
screen.update()
turtle.done()