当前位置:首页>python>用Python绘制专属表白特效!程序员的浪漫

用Python绘制专属表白特效!程序员的浪漫

  • 2026-09-30 17:50:28
用Python绘制专属表白特效!程序员的浪漫

一、先看看效果

粉色心形缓缓飘落,中间是发光的"I LOVE YOU",星星点缀夜空——这不仅是代码,更是告白的勇气

很多粉丝私信我:

"能不能做个表白专用的代码?想在纪念日给她一个惊喜!""代码能不能简单点?我编程小白但想亲手做点浪漫的!"

今天,满足你们——专属表白特效来了!

二、为什么这个项目适合表白?

优势
说明
💝 独一无二
亲手写的代码,比买礼物更有心意
🎨 视觉浪漫
心形飘落+发光文字,氛围感拉满
📦 简单易上手
80行以内,零基础也能运行
🔧 高度定制
改名字/颜色/文字,专属你们的故事
📱 多场景适用
屏保/视频/截图发消息,表白方式多样

三、环境准备(2分钟搞定)

pip install pygamepip install Pillow
✅ pygame是游戏开发库,动画效果流畅✅ 支持Windows/Mac/Linux全平台✅ 可导出为视频/截图/直接运行

四、完整代码(直接复制运行)

import pygameimport sysimport randomfrom PIL import Image# 初始化pygame.init()screen = pygame.display.set_mode((800, 600))pygame.display.set_caption("💖 专属表白特效")# 颜色定义BLACK = (10, 10, 30)PINK = (255, 105, 180)RED = (255, 50, 100)WHITE = (255, 255, 255)GOLD = (255, 215, 0)# 使用支持中文的字体font_big = pygame.font.SysFont('microsoftyahei', 80)font_small = pygame.font.SysFont('microsoftyahei', 36)# 心形飘落粒子class Heart:    def __init__(self):        self.x = random.randint(0, 800)        self.y = random.randint(-100, 0)        self.size = random.randint(8, 20)        self.speed = random.uniform(1, 3)        self.color = random.choice([PINK, RED, (255, 182, 193)])        self.alpha = random.randint(150, 255)    def update(self):        self.y += self.speed        if self.y > 600:            self.y = random.randint(-100, 0)            self.x = random.randint(0, 800)    def draw(self, surface):        heart_surface = pygame.Surface((self.size * 2, self.size * 2), pygame.SRCALPHA)        pygame.draw.circle(heart_surface, (*self.color, self.alpha), (self.size // 2, self.size // 2), self.size // 2)        pygame.draw.circle(heart_surface, (*self.color, self.alpha), (self.size * 3 // 2, self.size // 2),                           self.size // 2)        pygame.draw.polygon(heart_surface, (*self.color, self.alpha), [            (self.size, self.size * 1.5),            (0, self.size // 2),            (self.size * 2, self.size // 2)        ])        surface.blit(heart_surface, (self.x - self.size, self.y - self.size))# 创建心形粒子hearts = [Heart() for _ in range(50)]# 主循环clock = pygame.time.Clock()running = True# GIF保存相关save_gif = True  # 设置为True保存GIFframes = []  # 存储帧max_frames = 150  # 保存的帧数(约2.5秒,60fps)frame_count = 0print("💖 开始录制动画...")while running:    for event in pygame.event.get():        if event.type == pygame.QUIT:            running = False        if event.type == pygame.KEYDOWN:            if event.key == pygame.K_ESCAPE:                running = False            if event.key == pygame.K_s:  # 按S键保存GIF                save_gif = True                frames = []                frame_count = 0                print("📸 重新开始录制...")    screen.fill(BLACK)    # 绘制星星(固定种子让星星位置一致,GIF更流畅)    random.seed(42)    for _ in range(100):        x = random.randint(0, 800)        y = random.randint(0, 600)        size = random.randint(1, 2)        pygame.draw.circle(screen, WHITE, (x, y), size)    random.seed()  # 恢复随机种子    # 更新和绘制心形    for heart in hearts:        heart.update()        heart.draw(screen)    # 绘制文字    text = font_big.render("I LOVE YOU", True, GOLD)    text_rect = text.get_rect(center=(400, 250))    screen.blit(text, text_rect)    name_text = font_small.render("To: 我最爱的你", True, PINK)    name_rect = name_text.get_rect(center=(400, 350))    screen.blit(name_text, name_rect)    date_text = font_small.render("2026.03.25", True, WHITE)    date_rect = date_text.get_rect(center=(400, 400))    screen.blit(date_text, date_rect)    # 保存帧用于GIF    if save_gif and frame_count < max_frames:        # 将pygame表面转换为PIL图像        frame_data = pygame.image.tostring(screen, 'RGB')        frame = Image.frombytes('RGB', (800, 600), frame_data)        frames.append(frame)        frame_count += 1        print(f"📷 已捕获帧: {frame_count}/{max_frames}", end='\r')    pygame.display.flip()    clock.tick(60)# 保存GIFif frames:    print("\n💾 正在保存GIF...")    # 优化:减少颜色数量使GIF更小    frames[0].save(        'love_animation.gif',        save_all=True,        append_images=frames[1:],        duration=50,  # 每帧50毫秒(20fps)        loop=0,  # 无限循环        optimize=True    )    print("✅ GIF保存成功!文件:love_animation.gif")pygame.quit()sys.exit()

五、自定义参数(让表白变成你们的专属)

参数
修改位置
效果
表白文字
"I LOVE YOU"
改成你的告白语
对方名字
"To: 我最爱的你"
写上TA的名字
心形颜色
PINK, RED
粉色/红色/紫色
背景颜色
BLACK = (10, 10, 30)
深蓝/紫色/星空
心形数量
range(50)
稀疏/密集/暴雨

试试改成"纪念日"版本:

text = font_big.render("100天纪念日", True, GOLD)name_text = font_small.render("To: 小仙女", True, PINK)date_text = font_small.render("2024.01.01 - 2024.04.11", True, WHITE)
试试改成"求婚"版本:
text = font_big.render("MARRY ME?", True, GOLD)name_text = font_small.render("To: 未来的妻子", True, PINK)

六、表白场景建议

🎬 场景一:当面表白

      运行代码,全屏显示

      拉着TA的手,一起看心形飘落

      在"I LOVE YOU"出现时说出心里话

    📱 场景二:远程表白

    1.              录制运行视频(可用OBS)
    2.              加上你们的合照/音乐
    3.              发送:"这是我为你写的代码,每一行都是喜欢"

    💻 场景三:惊喜屏保

    1.              设置为电脑屏保
    2.              让TA偶然发现
    3.              配文:"打开电脑的那一刻,就想起了你"

    七、常见问题解答

    ❓ 运行后窗口太小?

        修改

    screen = pygame.display.set_mode((800, 600)) 为 (1920, 1080)

    ❓ 想加背景音乐?

    pygame.mixer.music.load("your_song.mp3")pygame.mixer.music.play(-1)

    最新文章

    随机文章