首页 > 编程语言 >忽悠财务小姐姐神器(python实现3D爱心)

忽悠财务小姐姐神器(python实现3D爱心)

时间:2024-11-13 16:47:15浏览次数:3  
标签:cos 小姐姐 particle python self random particles pygame 3D

1、设计背景

        最近在网上看到了很多粒子爱心的python源码,所以就突发奇想也做一个爱心,但是粒子爱心这么多人做了就没什么意思了,那我就来做一个3D粉嫩旋转爱心,要的就是别出心裁,出人意料。这发给财务小姐姐,我恏大力的春天不就来了!!

2、使用技术

        这次使用的是一个python很流行的游戏设计库pygame,这个库基本上可以做大部分单机小游戏,而且有独立的社区,很值得去研究一下。

3、源码如下:

        好的,废话不多说,上源码!(注释都在代码里)

import pygame
from math import sin, cos, pi
import random

# 初始化Pygame
pygame.init()

# 设置窗口
WIDTH = 800
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("流动的粒子爱心")

# 粒子类
class Particle:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
        self.original_x = x
        self.original_y = y
        self.original_z = z
        self.color = (255, 192, 203)  # 粉色
        self.size = random.randint(2, 4)
        self.speed = random.uniform(0.02, 0.05)
        self.offset = random.uniform(0, 2 * pi)

    def update(self, time):
        # 添加波动效果
        wave = sin(time + self.offset) * 0.5
        self.x = self.original_x + wave
        self.y = self.original_y + wave
        self.z = self.original_z + wave

# 生成心形粒子
def create_heart_particles(num_particles):
    particles = []
    for _ in range(num_particles):
        t = random.uniform(0, 2 * pi)
        r = random.uniform(0, 2)
        x = 16 * (sin(t) ** 3)
        y = -(13 * cos(t) - 5 * cos(2*t) - 2 * cos(3*t) - cos(4*t))
        z = random.uniform(-5, 5)
        particles.append(Particle(x, y, z))
    return particles

# 创建粒子
particles = create_heart_particles(5000)  # 增加粒子数量

# 主循环
running = True
angle = 0
time = 0
clock = pygame.time.Clock()

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 清空屏幕
    screen.fill((0, 0, 0))

    # 更新时间
    time += 0.05

    # 更新和绘制粒子
    for particle in particles:
        # 更新粒子位置
        particle.update(time)

        # 3D旋转
        x = particle.x * cos(angle) - particle.z * sin(angle)
        z = particle.x * sin(angle) + particle.z * cos(angle)
        
        # 3D到2D的投影
        scale = 200 / (z + 20)
        x2d = int(x * scale + WIDTH/2)
        y2d = int(particle.y * scale + HEIGHT/2)
        
        # 绘制粒子,添加渐变色效果
        if 0 <= x2d < WIDTH and 0 <= y2d < HEIGHT:
            size = int(particle.size * scale)
            if size < 1:
                size = 1
            # 根据波动改变颜色
            color_offset = int(abs(sin(time + particle.offset)) * 55)
            color = (255, 192 - color_offset, 203 - color_offset)
            pygame.draw.circle(screen, color, (x2d, y2d), size)

    angle += 0.01  # 减慢旋转速度
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

4、最终效果

        效果大概是这个样子的,这个效果实现也是没有任何素材,直接就能够运行,打包起来也很方便!

学会了就赶紧发给财务小姐姐吧!!!

标签:cos,小姐姐,particle,python,self,random,particles,pygame,3D
From: https://blog.csdn.net/m0_73747952/article/details/143747044

相关文章

  • GIS融合之路(八)-如何用Cesium直接加载OSGB文件(不用转换成3dtiles)
    系列传送门:山海鲸可视化:GIS融合之路(一)技术选型CesiumJS/loaders.gl/iTowns?山海鲸可视化:GIS融合之路(二)CesiumJS和ThreeJS深度缓冲区整合山海鲸可视化:GIS融合之路(三)CesiumJS和ThreeJS相机同步山海鲸可视化:GIS融合之路(四)如何用CesiumJS做出CesiumForUnreal的效果山海鲸可视化......
  • Python 桌面应用开发:使用 Tkinter 创建 GUI 应用程序
    Python桌面应用开发:使用Tkinter创建GUI应用程序引言随着计算机技术的飞速发展,桌面应用程序依然在许多领域中发挥着重要作用。Python作为一种强大的编程语言,提供了多种工具和库来创建桌面应用程序。其中,Tkinter是Python的标准GUI(图形用户界面)库,易于使用且功能强......
  • python毕设毕业设计管理系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于毕业设计管理系统的研究,现有研究主要以传统的管理模式为主,专门针对使用Python开发的毕业设计管理系统的研究较少。在当前教育环境......
  • Python Web 应用开发基础知识
    PythonWeb应用开发基础知识引言随着互联网的快速发展,Web应用程序的需求日益增加。Python作为一种简单易学且功能强大的编程语言,已经成为Web开发中广受欢迎的选择之一。本文将深入探讨PythonWeb开发的基础知识,包括常用框架、基本概念、数据库交互以及前后端分离等......
  • 2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell
    实验环境准备(同一个网段下,我是桥接的虚拟机)一、bash反弹shell二、python反弹shell三、nc反弹shell四、villain反弹shell实验环境准备(同一个网段下,我是桥接的虚拟机)      一台kali的linux(攻击者)        一台centos7/debian[另一个linux](受害者)一、b......
  • 免费送源码:Java+python+django+MySQL 小区疫情订菜系统 计算机毕业设计原创定制
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于小区疫情订菜系统当然也不能排除在外,随着网络技术的不断成熟,带动了小区疫情订菜系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • Windows 下安装miniconda 虚拟python环境,搭配 VS Code
    miniconda下载地址https://docs.anaconda.com/miniconda/miniconda-install/miniconda仓库:https://repo.anaconda.com/miniconda/可以按照官方文档校验哈希值,本次在Windows安装,不设置环境变量。从Anacondaprompt启动。2.配置国内源查看源设置condaconfig--show-so......
  • python装饰器decorator的应用
    python中的装饰器类似于java中的AOP切面编程的思想,下面通过demo教大家如何实现(1)一个最简单的装饰器demo1 #一个最简单的装饰器defmy_decorator(func):defwrapper():print("Somethingishappeningbeforethefunctioniscalled.")func()......
  • Python模块之manim (动画模块)
    模块作用简介:Python模块之manim(动画模块)官方英文帮助:https://docs.python.org/3/library/官方简体中文帮助:https://docs.python.org/zh-cn/3/library/manim官方:https://docs.manim.community/en/stable/installation.html必要操作:>>>frommanimimport*......
  • python中利用/和*控制位置参数和关键字参数
    python中利用/和*控制位置参数和关键字参数内容是的,在Python中,/和*都可以用在函数参数定义中,用来控制参数的传递方式。具体来说:/:表示位置参数(positional-onlyparameters),即只能按位置传递的参数。*:表示关键字参数(keyword-onlyparameters),即只能按关键字传递的参数。......