写一个动态的锦鲤游动的电脑屏保,要求Windows11系统可以用,要求要有3D效果

以下是一个使用Python和Pygame实现的3D锦鲤屏保示例,基于OpenGL实现3D效果。

需要先安装依赖库:

bash

pip install pygame pyopengl numpy

创建文件 koi_screensaver.py

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
import numpy as np
import random
import sys

class Koi:
    def __init__(self):
        self.pos = np.array([random.uniform(-5,5), random.uniform(-3,3), random.uniform(-10,0)])
        self.speed = random.uniform(0.3, 0.7)
        self.angle = random.uniform(0, 360)
        self.body_phase = random.random() * 360
        self.color = (random.random(), random.random(), random.random())

    def draw_body(self):
        glPushMatrix()
        glTranslatef(*self.pos)
        glRotatef(self.angle, 0, 1, 0)
        
        # 3D鱼身
        glColor3f(*self.color)
        glBegin(GL_QUAD_STRIP)
        for i in range(21):
            t = i/20.0
            x = 0.5 * np.cos(t * np.pi)
            y = 0.2 * np.sin(t * np.pi * 4 + np.radians(self.body_phase))
            glVertex3f(x, y, 0.8 - t*1.6)
            glVertex3f(x*0.8, y*0.8, 0.8 - t*1.6)
        glEnd()

        # 鱼鳍
        glColor3f(0.9, 0.6, 0.2)
        glBegin(GL_TRIANGLES)
        glVertex3f(0.3, 0, 0.5)
        glVertex3f(0.6, 0, 0.3)
        glVertex3f(0.3, 0, 0.1)
        glEnd()
        glPopMatrix()

    def update(self):
        self.pos += self.speed * np.array([
            np.sin(np.radians(self.angle)),
            np.cos(np.radians(self.angle)),
            0.1
        ]) * 0.1
        self.body_phase += 5
        if abs(self.pos[0]) > 5 or abs(self.pos[1]) > 3:
            self.angle += random.uniform(-90, 90)
        self.pos[2] = self.pos[2] % 10 - 10

def init_gl():
    glEnable(GL_DEPTH_TEST)
    glEnable(GL_LIGHTING)
    glEnable(GL_LIGHT0)
    glLightfv(GL_LIGHT0, GL_POSITION, (5, 5, 5, 1))
    glLightfv(GL_LIGHT0, GL_DIFFUSE, (1,1,1,1))
    glMaterialfv(GL_FRONT, GL_DIFFUSE, (0.7,0.7,0.7,1))
    gluPerspective(45, (16/9), 0.1, 50.0)
    glTranslatef(0,0, -10)

def main():
    pygame.init()
    display = (1920, 1080)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL|FULLSCREEN)
    pygame.mouse.set_visible(False)

    koies = [Koi() for _ in range(8)]
    clock = pygame.time.Clock()
    angle = 0

    init_gl()

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT or \
               event.type == pygame.KEYDOWN or \
               event.type == pygame.MOUSEMOTION:
                pygame.quit()
                sys.exit()

        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
        
        # 动态视角
        angle += 0.1
        glLoadIdentity()
        gluLookAt(5*np.sin(np.radians(angle)),3,5*np.cos(np.radians(angle)),
                  0,0,0,
                  0,1,0)

        # 绘制锦鲤
        for koi in koies:
            koi.draw_body()
            koi.update()

        # 水底背景
        glBegin(GL_QUADS)
        glColor3f(0.1,0.2,0.4)
        glVertex3f(-10,-2,-10)
        glVertex3f(10,-2,-10)
        glVertex3f(10,-2,10)
        glVertex3f(-10,-2,10)
        glEnd()

        pygame.display.flip()
        clock.tick(30)

if __name__ == "__main__":
    main()

 

安装为屏保的步骤:

  1. 将文件保存为 koi_screensaver.py

  2. 安装依赖:

    bash

pip install pygame pyopengl numpy
  1. 创建快捷方式:

    • 右键文件 -> 发送到 -> 桌面快捷方式

  2. 重命名快捷方式为 koi_screensaver.scr

  3. 将.scr文件复制到 C:\Windows\System32

  4. 设置屏保:

    • 右键桌面 -> 个性化 -> 锁屏界面 -> 屏幕保护程序设置

    • 选择"koi_screensaver"

特点说明:

  1. 使用OpenGL实现3D渲染

  2. 多条随机颜色的锦鲤以3D方式游动

  3. 动态视角缓慢旋转

  4. 鱼身有波浪形摆动动画

  5. 支持全屏显示

  6. 鼠标移动或按键立即退出

注意事项:

  1. 需要支持OpenGL 2.0以上的显卡

  2. 首次运行可能需要管理员权限

  3. 可以通过修改代码中的koies数量调整鱼的数量

  4. 颜色和速度参数均可自定义调整

可以通过修改Koi类的参数来调整锦鲤的外观和行为特征,比如修改body_phase的变化值可以调整鱼身摆动的速度。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值