【Python】使用Pygame制作满屏漂浮的多彩爱心动画(文末附完整代码下载)

在这篇技术博客中,我们将探讨如何使用Pygame库来创建一个满屏漂浮着多彩实心小爱心的动画程序,同时不时显示一句温馨的话“小公主我爱你”。这个项目结合了基本的图形处理、动画技术和文本显示,适合作为入门级的Pygame学习项目。让我们开始吧!

在这里插入图片描述


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

在这里插入图片描述

1. 介绍

Pygame是一个简单且功能强大的Python库,用于开发2D游戏和图形应用。通过这个项目,我们将探讨如何使用Pygame来创建复杂但有趣的动画效果。我们将实现一个满屏漂浮多彩实心小爱心的动画,同时不时显示一句温馨的话。

2. 准备工作

在开始之前,请确保你已安装Pygame库。可以使用以下命令进行安装:

pip install pygame

3. 初始化Pygame

首先,我们需要初始化Pygame并设置窗口参数。以下代码片段演示了这一步骤:

import pygame
import sys
import random
import math

# 初始化 Pygame
pygame.init()

# 屏幕宽高
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("漂浮的爱心")

我们设置了宽度为800,高度为600的窗口,并将窗口标题设置为“漂浮的爱心”。

4. 创建爱心类

接下来,我们将创建一个“浮动爱心”类,用于管理爱心的属性和行为。每个爱心都有随机的位置、大小、速度和颜色。我们还使用了一些数学公式来生成心形的轮廓点,并通过pygame.draw.polygon函数来绘制实心的爱心。

class FloatingHeart():
    def __init__(self):
        self.x = random.randint(0, WIDTH)
        self.y = random.randint(0, HEIGHT)
        self.size = random.randint(1, 3)  # 更小的爱心
        self.speed = random.uniform(0.5, 1.5)
        self.color = (random.randint(100, 255), random.randint(100, 255), random.randint(100, 255))
    
    def move(self):
        self.y -= self.speed
        if self.y < -self.size:
            self.y = HEIGHT + self.size
    
    def draw(self, surface):
        points = []
        for i in range(100):  # 减少循环次数来绘制实心心形
            t = i 。。。#按文末指引下载完整代码后可查看后续代码

5. 创建多个爱心实例

为了实现满屏效果,我们将创建多个爱心实例。以下代码创建了100个随机属性的浮动爱心实例:

hearts = [FloatingHeart() for _ in range(100)]

6. 显示中文文本

为了在Pygame中正确显示中文,我们需要使用支持中文的字体。这里我们选择使用“微软雅黑(Microsoft YaHei)”字体。确保你的系统中另有安装该字体。以下代码加载字体并定义一个绘制文本的函数:

# 加载支持中文的字体
font = pygame.font.SysFont("microsoftyahei", 48)

def draw_text(surface, text, font, x, y):
    text_surface = font.。。。#按文末指引下载完整代码后可查看后续代码

7. 实现主循环

在主循环中,我们将管理爱心的移动、绘制和文本的显示。每隔五秒钟,我们将在屏幕中间显示“小公主我爱你”这句话。

def main():
    running = True
    text_counter = 0  # 文本显示计数器
    
    while running:
        screen.fill(BLACK)
        for event。。。#按文末指引下载完整代码后可查看后续代码

我们添加了一个计数器,用来控制文本的显示频率。text_counter每帧增加一次,确保每五秒显示一次文本。

8. 整体代码

将所有代码整合在一起,如下所示:

import pygame
import sys
import random
import math

# 初始化 Pygame
pygame.init()

# 屏幕宽高
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("漂浮的爱心")

# 颜色定义
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

# 刷新帧率
clock = pygame.time.Clock()
FPS = 30

class FloatingHeart():
    def __init__(self):
        self.x = random.randint(0, WIDTH)
        self.y = random.randint(0, HEIGHT)
        self.size = random.randint(1, 3)  # 更小的爱心
        self.speed = random.uniform(0.5, 1.5)
        self.color = (random.randint(100, 255), random.randint(100, 255), random.randint(100, 255))
    
    def move(self):
        self.y -= self.speed
        if self.y < -self.size:
            self.y = HEIGHT + self.size
    
    def draw(self, surface):
        points = []
        for i in range(100):  # 减少循环次数来绘制实心心形
            t = i / 99 * math.pi * 2
            x = self.size * 16 * math.sin(t) ** 3
            y = -self.size * (13 * math.cos(t) - 5 * math.cos(2 * t) - 2 * math.cos(3 * t) - math.cos(4 * t))
            points.append((self.x + int(x), self.y + int(y)))
        
        pygame.draw.polygon(surface, self.color, points)  # 使用多边形来填充实心爱心

# 创建爱心列表
hearts = [FloatingHeart() for _ in range(100)]

# 加载支持中文的字体
font = pygame.font.SysFont("microsoftyahei", 48)

def draw_text(surface, text, font, x, y):
    text_surface = font.render(text, True, WHITE)
    surface.blit(text_surface, (x, y))

def main():
    running = True
    text_counter = 0  # 文本显示计数器
    
    while running:
        screen.fill。。。#按文末指引下载完整代码后可查看后续代码

9. 完整代码下载

完整可运行的代码,可以微信搜索公众号:Alex技术圈 或者 AlexTechVision,关注公众号后回复:流星雨进行免费下载。


在这里插入图片描述
在这里插入图片描述

10. 结论

通过这篇文章,我们使用Pygame构建了一个生动的小项目:屏幕上会漂浮许多多彩实心的小爱心,并且每隔五秒钟显示一句温馨的话——“小公主我爱你”。这个项目不仅充满了乐趣,还展示了Pygame在图形处理和动画方面的强大功能。希望这篇文章对你学习Pygame有所帮助,激发你创造更多有趣的项目!如果有任何问题或建议,欢迎在评论区留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值