# 桌面鱼塘 Fishpond **Repository Path**: liangwei0501/fishpond ## Basic Information - **Project Name**: 桌面鱼塘 Fishpond - **Description**: 一个透明置顶的桌面宠物鱼塘,Boids 算法模拟鱼群自然游动,带天气系统和交互扰动。 - **Primary Language**: Rust - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-16 - **Last Updated**: 2026-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎏 桌面鱼塘 Fishpond 一个透明置顶的桌面宠物鱼塘,Boids 算法模拟鱼群自然游动,带天气系统和交互扰动。 ## ✨ 功能特性 ### 🐟 鱼群仿真 - **Boids 算法**:分离、对齐、聚合三条规则,鱼群自然结群游动 - **丰富状态机**:闲逛 / 觅食 / 争抢食物 / 受惊逃跑 / 疲劳休息 - **领头鱼机制**:第一只鱼作为领头,游速更快、胆子更大,其他鱼自然跟随 - **同伴惊吓传染**:一条鱼受惊后,附近的鱼有概率一起跑 - **滞回设计**:避免鱼在找食/不找食之间频繁闪烁 ### 🌊 水面交互 - **鼠标扰动**:鼠标靠近鱼会把鱼吓跑,涟漪淡而小像真水纹 - **自然风波纹**:随机位置冒小风涟漪 - **透明窗口**:完全透明,鱼游在你桌面工作区上面,不挡操作 ### 🌦️ 天气系统 | 天气 | 效果 | |------|------| | ☀️ 晴朗 | 涟漪稀疏,鱼正常游 | | 🌧️ 下雨 | 水面密集冒小涟漪,鱼更活跃、游速+20%,食欲更好,受惊概率低30% | | 💨 大风 | 鱼群被风吹得整体往右飘,波纹更密 | 天气自动25~60秒轮切,也可以从托盘手动选。 ### 🥢 交互 - **鼠标中键投食**:一次撒3~5粒饲料,棕褐色小颗粒 - **自动投食**:托盘开关开启后每3~6秒自动撒食 - **托盘菜单**:中文多级菜单,显示/隐藏、天气选择、自动投食开关、退出 - **双击托盘图标**:快速显示/隐藏鱼缸 ## 🛠️ 技术栈 - **前端**:Vue 3 + TypeScript + PixiJS(Canvas 渲染) - **后端**:Rust + Tauri 2 - **算法**:Boids 鱼群仿真、Win32 API 全局鼠标轮询(零阻塞,不卡鼠标) - **渲染**:60fps,Rust 后端物理计算,通过事件推给前端绘制 ## 🚀 运行 ```bash # 安装依赖 pnpm install # 开发模式 pnpm tauri dev # 打包 pnpm tauri build ``` ## 🎮 交互说明 | 操作 | 效果 | |------|------| | 鼠标移动靠近鱼 | 鱼受惊逃跑 | | 鼠标中键点击 | 在点击位置撒饲料 | | 双击托盘图标 | 显示/隐藏鱼缸 | | 托盘右键 | 打开菜单,切换天气、自动投食、退出 | ## 📂 项目结构 ``` src/ ├── components/ │ └── FishTank.vue # PixiJS 前端渲染 src-tauri/ ├── src/ │ ├── fish.rs # 鱼 AI 状态机 │ ├── sim.rs # 物理仿真、天气、食物 │ └── lib.rs # Tauri 入口、托盘、鼠标轮询 └── Cargo.toml ``` --- Enjoy your little desktop pond! 🎏