Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📌 DesktopPet — 桌面电子宠物

这是一个运行在 Windows 桌面上的 QWidget 桌面电子宠物应用程序,支持:

  • 多动作动画
  • 桌面物理模拟(掉落、爬墙、爬天花板)
  • 任务栏与桌面边缘的动态吸附
  • 拖拽与抛掷
  • GPU/CPU 信息监控(在 v1 开始加入)
  • 托盘图标动画(类似 RunCat)
  • 单例模式优化(在 v2 完成)

本项目包括多个演化版本,从最初的动画演示逐步扩展到带监控与系统优化的可用工具。


✨ 功能特性

🐱 桌面宠物动画系统

  • 数十种动作帧动画: idle、walk、sit、standup、wall climb、ceiling walk、drop…
  • 高精度帧定时,使宠物动作平滑自然
  • 动态资源加载与缓存

🧱 物理交互

  • 自由落体(gravity)
  • 屏幕边缘吸附
  • 爬墙、爬天花板
  • (支持任务栏顶部站立)

🖱️ 鼠标交互

  • 拖拽移动
  • 快速/慢速拖动触发不同表情动画
  • 抛掷计算(vx/vy)

🖥 GPU/CPU 资源监控(v1+)

  • 后台监控 GPU 使用率(NVML)
  • 后台监控 CPU 使用情况
  • 托盘图标随系统负载变化(RunCat 风格)

🧩 托盘图标动画(RunCat)

  • 图标自动缩放与安全居中
  • 资源监控驱动动画速度
  • 支持放大显示与线条化图标(特别处理 PNG 底部内容)

⚙️ 高性能优化(v2)

  • 单例模式
  • 更少的内存占用
  • EventLoop 优化
  • 图标缓存提升流畅度
  • 大幅降低 NVML 调用频率

🧱 多宠物模式(v3)

  • 可以支持两个宠物同时出现
  • 可以支持设置宠物出现最多数量

🗂 项目结构(与实际目录一致)

H:.
├─.idea                       # PyCharm 配置
│  └─inspectionProfiles
│
├─icons                       # 托盘图标资源
│  ├─cat                      # 原始 RunCat 图标
│  └─cat2                     # 云母图案图标(新版)
│      ├─processed            # 处理后的透明线条版
│      └─processed_AI         # AI 生成的线条强化版本
│
├─img_cat                     # 猫咪动画资源
├─img_quan                    # 电子宠物动画(泉)资源
│
└─utils                       # 工具脚本(如图标处理工具)

🐱 动作图集与图标说明

1️⃣ 桌面宠物动作图集(角色皮肤)

  • img_cat

    一套完整的 云母 动作图:

    • idle.png(站立发呆)
    • walk00000.png ~ walk00010.png(行走)
    • sit*.png(坐下、坐着发呆、摇腿)
    • wall*.png(爬墙)
    • ceiling*.png(天花板动作)
    • drag*.png(拖拽中的反馈)
    • drop.png / fly.png / born*.png
  • img_quan

    一套 犬夜叉/云母 的动作资源,结构与 img_cat 类似,可以切换皮肤。

程序中通过 IMG_DIR 指定使用哪套资源,例如:

IMG_DIR = "./img_quan"   # 使用 犬夜叉 这一套皮肤
# 或
IMG_DIR = "./img_cat"    # 改成 云母 皮肤

2️⃣ 托盘图标 / RunCat 风格图标

  • icons/cat

    原始彩色图标,常用于托盘动画(例如 0.png ~ 9.png)。

  • icons/cat2

    另一套图标资源,通常用于你自行处理的风格化版本。

  • icons/cat2/processed

    使用本地脚本(如你提供的线稿处理工具)生成的图标版本,黑白/线稿化

  • icons/cat2/processed_AI

    通过 AI 模型或其他脚本生成的版本,可进行对比或替换使用。

🧬 项目版本说明

📌 v0.8 — 电子桌宠基础版(pet_v0.8.py)

  • 实现了完整的桌宠动画系统
  • 支持以下动作状态:
    • idle: 站着发呆
    • walk: 在桌面底部行走
    • sit / sit_idle / sitloop / standup: 坐下 → 发呆 → 摇腿 → 起立
    • fly / drag_throw / drop: 被抛出、在空中飞行、掉落
    • wall_idle / wall_climb / wall_descend: 爬墙
    • ceiling_walk: 天花板上爬行
  • 物理逻辑完善:掉落、墙面吸附、天花板移动
  • 支持多个宠物实例(分身):
    • 右键菜单 → “立即生成分身”
    • 某些动作(born)结束后自动生成新的宠物实例

💡 适合作为最轻量的桌面萌宠


📌 v1 — 带系统监控的增强版(pet_v1.py)

新增:

  • 定时获取:
    • CPU 占用(psutil.cpu_percent()
    • 内存占用(psutil.virtual_memory()
    • GPU 占用(通过 nvidia-ml-py / pynvml
  • 将资源占用映射到:
    • 宠物动作(例如占用高时更疯狂/奔跑)
    • 托盘图标动画速度(RunCat 跑得更快)
  • 任务栏图标缩放(自定义透明 PNG 处理)

示例逻辑:

  • CPU 使用率 < 30% → idle / 慢速走路
  • CPU 使用率 > 70% → walk / run / 托盘动画加速

这是一个实验版本,包含更丰富的交互,但尚未优化资源占用。

注意事项:

  • 如你看到 pynvml 的 FutureWarning,建议改用 nvidia-ml-py
  • 若无 NVIDIA GPU,可关闭 GPU 相关逻辑或做好异常捕获。

📌 v2 — 单例模式 + 完整优化版(pet_v2.py)

基于 v1 做了主要重构:

  • 使用 单例模式 防止多次启动:
    • 可能会通过文件锁 / 端口 / Qt 单例机制实现,确保同一时间只有一个实例运行。
  • 优化计时器与监控:
    • 合理设置 QTimer 间隔(例如 500ms / 1000ms),降低 CPU 开销。
    • 避免在 UI 线程做大量计算。
  • 动作状态机更清晰:
    • 将状态与动作、物理行为分开(update_physics_* 系列函数)。
    • 对多屏幕环境、任务栏高度做了更完善的支持:
      • 宠物可以站在:屏幕底部 / 任务栏顶
      • 掉入任务栏底部以下则视为坠落 → 重置到顶部重新掉落

推荐作为日常使用的主版本

核心优化:

  • 应用采用单例模式(避免启动多个重复监控线程)
  • GPU 监控线程合并
  • 图标渲染优化(QIcon 缓存、缩放居中处理)
  • 更低的内存消耗与 CPU 占用

🎉 这是推荐的最终稳定版本

📌 v3 — 多宠物版(pet_v2.py)

基于 v2 做了主要重构:

  • 支持犬夜叉、云母两个宠物同时出现
  • 支持动态设置同时能够出现的宠物数量

🚀 安装与运行

1. 安装依赖

pip install PyQt5 pillow numpy opencv-python nvidia-ml-py

如果是 NVIDIA 用户需要 GPU 监控:

pip install nvidia-ml-py

(注意:pynvml 已弃用)


2. 运行项目

基础桌宠

python pet_v0.8.py

含系统监控版本

python pet_V1.py

单例优化最终版

python pet_V2.py

多宠物最终版

python pet_V3.py

🎮 常见交互说明

  • 左键按住宠物:拖拽到任意位置
    • 快速甩动 → 松手后会被抛出(fly / drag_throw
  • 右键点击宠物:打开菜单
    • 调试动作(Wall Climb / Ceiling Walk 等)
    • 立即生成分身
    • 移除此宠物
    • 全部退出
  • 多屏幕场景
    • 宠物会检测当前所在屏幕,并使用该屏幕的可用区域(避开任务栏)
    • 支持从桌面掉落 → 进入任务栏区域 → 视为坠落 → 重置到顶部

🔧 自定义与扩展

你可以通过修改以下内容来自定义自己的桌宠行为:

  • 切换皮肤
    • IMG_DIR 指向 img_cat / img_quan 或新的图集目录。
  • 修改 AI 行为decide_ai 函数):
    • 调整 idle → walk → sit → standup 的概率。
  • 自定义托盘图标风格
    • icons 下增加新目录,例如 icons/slime/processed
    • 调整 RUNCAT_DIR 指向新的图标集
  • 增加新动作
    • ACTIONS 中新增动作键值对(如 "run": [...]
    • 在状态机 / AI 中加入相应逻辑(set_state("run")

⚠️ 注意事项

  • 图标过大可能导致 Windows 托盘缩小显示
  • GPU 监控需要显卡驱动正确安装
  • 若出现“nvml not loaded”,请检查 CUDA/NVIDIA 驱动
  • 多实例运行可能造成 GPU 测量冲突(v2 已解决)

📌 未来规划

本项目未来打算增加的功能:

  • 动作编辑器(自定义动画)
  • 宠物互动系统(点击、喂食)
  • 自定义皮肤加载器
  • 增加杀生丸、戈薇、桔梗...等其他动漫IP
  • 插件系统
  • 更多环境传感(网络测速、温度监控)

❤️ 致谢

本项目灵感来自 WinDesktopPet、RunCat、各种日式桌宠 角色素材:B站UP主“时无千夜”提供的桌宠【【犬夜叉桌宠展示】犬夜叉占领电脑桌面啦】 https://www.bilibili.com/video/BV12a4y1J79V/?share_source=copy_web&vd_source=ef716d8d6e2daf690b69eb33fbe0f9bd 图标素材:角色素材图片处理得到

About

A digital desktop pet based on the Python programming language, using the IP of the character Inuyasha.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages