# wormhole-pet **Repository Path**: yushui688/wormhole-pet ## Basic Information - **Project Name**: wormhole-pet - **Description**: 🌑⚪ 黑洞与白洞桌面宠物 — 吞噬文件、喷出新文件,右键切换宇宙人格 - 一只住在桌面角落的宇宙奇点:黑洞吃文件,白洞造文件 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🌑 黑洞桌面宠物 — Event Horizon Desktop Pet 一个用 Electron + Canvas 实现的黑洞主题桌面宠物,具有真实的天体物理视觉效果和可爱的交互行为。 ![黑洞宠物](https://img.shields.io/badge/status-active-brightgreen) ![Electron](https://img.shields.io/badge/electron-28.3.3-blue) ## ✨ 特性 ### 🎨 视觉效果 - **事件视界**:纯黑的引力奇点 - **光子球**:明亮的引力透镜环 - **吸积盘**:3D 倾斜的炽热气体环,带开普勒旋转(内快外慢) - **多普勒效应**:盘面朝向观测者的一侧更亮 - **相对论射流**:从两极喷出的高能粒子束 - **粒子系统**: - 落入粒子:沿对数螺旋线掉入事件视界 - 霍金辐射:从事件视界边缘缓慢逃逸的量子粒子 - **动态星空**:闪烁的背景星场 - **星云光晕**:紫色的引力透镜光晕 ### 🐾 宠物行为 - **状态系统**: - 😌 **闲置**:平静旋转,偶尔说话 - 😋 **饥饿**:吸积盘暗淡,请求喂食 - 🤩 **兴奋**:快速旋转,大量吸收物质 - 😴 **休眠**:缓慢脉动,发射霍金辐射 - **交互**: - 👆 **点击事件视界**:喂食 → 增加质量 → 进入兴奋状态 → 爆发粒子 - 🖱️ **拖拽**:移动宠物到屏幕任意位置 - 💬 **对话气泡**:根据心情随机显示中文台词 - 🔄 **自动行为**:饥饿值和快乐值随时间变化 ### 🪟 桌面集成 - ✅ 透明无边框窗口 - ✅ 始终置顶(可从托盘切换) - ✅ 系统托盘图标 + 右键菜单 - ✅ 跨 macOS Space 显示 - ✅ 低资源占用 ## 🚀 快速开始 ### 安装 ```bash cd "/Users/yushui/Desktop/黑洞UI" npm install ``` ### 运行 ```bash npm start ``` ### 开发模式(带调试工具) ```bash npm run dev ``` ## 🎮 使用说明 ### 基本交互 1. **移动宠物**:按住鼠标拖拽黑洞任意位置 2. **喂食**:点击事件视界(中心黑色圆圈),会看到: - 爆发霍金辐射粒子 - 吸积盘加速旋转 - 弹出兴奋对话 - 质量轻微增加 3. **退出**: - 鼠标悬停在窗口上时,右上角会显示 `✕` 按钮 - 或右键点击托盘图标 → 退出 ### 托盘菜单 - **显示/隐藏**:临时隐藏宠物窗口 - **置顶切换**:关闭"始终置顶"以避免遮挡其他窗口 - **退出**:关闭应用 ### 宠物状态观察 - **饥饿**:长时间不点击,气泡会说"我好饿啊…" - **兴奋**:点击后快速旋转,持续 5 秒 - **休眠**:快乐值过低时进入,显示"zzz…" ## 📁 项目结构 ``` 黑洞UI/ ├── package.json # 项目配置 ├── main.js # Electron 主进程(窗口管理 + 托盘) ├── preload.js # IPC 桥接(安全通信) ├── index.html # 渲染器 HTML ├── renderer.js # ⭐ 核心渲染引擎: │ # - BlackHoleRenderer(黑洞视觉) │ # - ParticleSystem(粒子系统) │ # - PetBrain(宠物 AI) └── README.md # 本文档 ``` ## 🎨 技术细节 ### 渲染层次(从底到顶) 1. 星空背景(静态 + 闪烁) 2. 外星云光晕(径向渐变) 3. 相对论射流(两极粒子束) 4. **吸积盘后半**(椭圆变换模拟 3D) 5. 引力透镜环(光子球) 6. **事件视界**(纯黑圆) 7. **吸积盘前半**(遮挡事件视界,形成 3D 错觉) 8. 落入粒子(对数螺旋轨道) 9. 霍金辐射(向外逃逸) 10. 对话气泡 ### 物理模拟 - **开普勒旋转**:吸积盘内圈角速度更快(ω ∝ r⁻¹·⁵) - **温度梯度**:内缘白热(~10⁶K)→ 外缘暗红(~10⁴K) - **多普勒增亮**:朝向观测者的盘面边缘更亮 - **引力俘获**:粒子在 r < 3R_s 处被不可逆吸入 ### 性能优化 - 粒子池复用(无 GC 抖动) - 预生成静态星场 - 60 FPS 动画循环 - 低 CPU 占用(~2-5%) ## 🛠️ 自定义 ### 修改黑洞大小 编辑 `renderer.js` 顶部常量: ```javascript const R_HORIZON = 52; // 事件视界半径 (px) const R_DISK_OUT = 130; // 吸积盘外缘 ``` ### 修改对话内容 编辑 `renderer.js` 中的 `DIALOGS` 对象: ```javascript const DIALOGS = { idle: ['你的台词...'], excited: ['兴奋台词...'], // ... }; ``` ### 修改颜色方案 `diskColor()` 函数控制吸积盘颜色梯度: ```javascript const stops = [ [255, 255, 220], // 内缘:白黄 [255, 180, 30], // 中层:金橙 [220, 60, 0], // 外层:深橙红 [ 80, 5, 20], // 边缘:暗红 ]; ``` ## 📝 TODO - [ ] 添加更多宠物状态(生气、好奇) - [ ] 实现"吞噬文件"动画(拖拽文件到黑洞) - [ ] 添加音效(低频隆隆声、粒子嗖嗖声) - [ ] 支持多黑洞(双星系统互绕) - [ ] 自定义皮肤(脉冲星、中子星) - [ ] 数据持久化(保存宠物状态) ## 🐛 已知问题 - macOS 通知中心可能遮挡托盘图标(系统限制) - 在某些暗色壁纸下黑洞边缘不够明显(可增加光晕强度) ## 📜 许可 MIT License — 自由使用和修改 ## 🙏 致谢 灵感来源: - NASA 的黑洞视觉化项目 - 《星际穿越》中的"卡冈图雅"黑洞渲染 - Electron 社区的桌面宠物先例 --- **享受你的黑洞宠物吧!记得定期喂食,不然它会饿得发射霍金辐射 🌌**