在这篇技术博客中,我们将探讨如何使用Pygame库来创建一个满屏漂浮着多彩实心小爱心的动画程序,同时不时显示一句温馨的话“小公主我爱你”。这个项目结合了基本的图形处理、动画技术和文本显示,适合作为入门级的Pygame学习项目。让我们开始吧!
🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:
gylzbk
)
💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【Python】使用Pygame制作满屏漂浮的多彩爱心动画
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有所帮助,激发你创造更多有趣的项目!如果有任何问题或建议,欢迎在评论区留言。