超炫!Python实现3D爱心粒子全屏跳动完整代码揭秘
# Python 3D爱心粒子全屏跳动代码 以下是一个使用Python和Pygame创建3D爱心粒子全屏跳动效果的完整代码: ```python import pygame import math import random import numpy as np from pygame.locals import * # 初始化pygame pygame.init() # 设置全屏显示 info = pygame.display.Info() WIDTH, HEIGHT = info.current_w, info.current_h screen = pygame.display.set_mode((WIDTH, HEIGHT), FULLSCREEN) pygame.display.set_caption("3D爱心粒子") # 颜色定义 RED = (255, 50, 50) PINK = (255, 100, 150) WHITE = (255, 255, 255) BLACK = (0, 0, 0) # 粒子类 class Particle: def __init__(self): self.reset() self.z = random.uniform(0, 20) def reset(self): self.x = random.uniform(-2, 2) self.y = random.uniform(-2, 2) self.z = random.uniform(0, 20) self.size = random.uniform(1, 3) self.color = random.choice([RED, PINK, WHITE]) self.speed_z = random.uniform(0.02, 0.1) def update(self): self.z -= self.speed_z if self.z <= 0: self.reset() def get_2d_pos(self): # 3D到2D投影 factor = 10 / (10 + self.z) x = self.x * factor + WIDTH // 2 y = -self.y * factor + HEIGHT // 2 return x, y, self.size * factor # 创建爱心形状的函数 def heart_shape(t, scale=1.0): 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 # 创建粒子系统 particles = [Particle() for _ in range(500)] # 主循环 clock = pygame.time.Clock() running = True time = 0 while running: screen.fill(BLACK) time += 0.01 # 处理退出事件 for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): running = False # 更新并绘制粒子 for particle in particles: # 计算爱心形状 t = random.uniform(0, 2 * math.pi) hx, hy = heart_shape(t, 0.1) # 添加一些随机性使粒子跳动 particle.x = hx + math.sin(time * 2 + particle.z) * 0.2 particle.y = hy + math.cos(time * 1.5 + particle.z) * 0.2 particle.update() x, y, size = particle.get_2d_pos() pygame.draw.circle(screen, particle.color, (int(x), int(y)), int(size)) # 显示FPS fps = int(clock.get_fps()) font = pygame.font.SysFont('Arial', 20) fps_text = font.render(f'FPS: {fps}', True, WHITE) screen.blit(fps_text, (10, 10)) pygame.display.flip() clock.tick(60) pygame.quit() ``` ## 代码说明: 1. 这段代码创建了一个全屏的3D爱心粒子效果,粒子会从远处向屏幕前方移动,形成跳动的爱心形状。 2. 主要组成部分: - `Particle`类:管理每个粒子的位置、大小、颜色和移动逻辑 - `heart_shape`函数:数学公式生成爱心形状的坐标 - 主循环:更新粒子位置并绘制到屏幕上 3. 效果特点: - 粒子在3D空间中形成爱心形状 - 添加了正弦波使爱心有跳动效果 - 粒子从远处向近处移动,形成深度感 - 按ESC键可退出程序 ## 运行要求: - 需要安装pygame库:`pip install pygame numpy` - 建议在性能较好的电脑上运行,因为粒子数量较多 ## 注意事项: 1. 粒子数量可以根据电脑性能调整,增加粒子会使效果更密集但可能降低帧率 2. 爱心的大小和跳动幅度可以通过修改`heart_shape`函数中的参数和正弦波幅度来调整 3. 颜色方案可以自定义,修改`RED`、`PINK`和`WHITE`的值或添加更多颜色选项 ######[AI写代码神器 | 1077点数解答 | 2025-06-02 09:20:45]
- Python 实现非负数乘方表生成:输入解析、精度与输出格式的注意要点(讯飞星火 | 204点数解答 | 2025-10-28 23:00:11)110
- 逆向递推!从最后 1 个桃子算出猴子第一天摘桃总数(讯飞星火 | 687点数解答 | 2025-10-28 23:04:06)107
- 逆向求解:从剩余 1 个桃子推算第一天猴子摘桃总数(字节豆包 | 93点数解答 | 2025-10-28 23:05:10)108
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)485
- C语言:利用函数实现输入三个整数并从大到小排序输出(字节豆包 | 246点数解答 | 2024-10-22 22:06:20)305
- C语言:输入三个整数并从大到小排序输出的实现代码(字节豆包 | 305点数解答 | 2024-10-22 22:07:27)363
- C语言:输入三个整数并从大到小排序输出的实现(字节豆包 | 259点数解答 | 2024-10-25 00:53:10)253
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)366
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)436
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)429
- C++ 实现我的世界基岩版:从简单框架到开发要点揭秘(字节豆包 | 182点数解答 | 2025-02-22 15:53:11)210
- C++ 实现完整斗地主:含洗牌、发牌与手牌展示,可按需扩展!(字节豆包 | 1028点数解答 | 2026-01-10 08:02:37)52