| --- |
| title: MagicPot - 魔法锅游戏 |
| emoji: 🪄 |
| colorFrom: purple |
| colorTo: pink |
| sdk: static |
| pinned: false |
| license: mit |
| --- |
| |
| # MagicPot - 魔法锅游戏 |
|
|
| 一个卡通手绘风格的语音交互游戏,通过声音控制魔法锅烹饪各种食物! |
|
|
| ## 游戏特色 |
|
|
| - 🎨 **卡通手绘风格**:温馨可爱的视觉效果 |
| - 🎤 **语音交互**:通过语音命令控制游戏 |
| - 🍳 **魔法烹饪**:AI生成食物和小动物素材 |
| - ✨ **粒子效果**:食物从锅中涌出的动态效果 |
| - 🐾 **动物互动**:小动物会来吃对应的食物 |
| - 🎁 **隐藏彩蛋**:草莓和西瓜的特殊效果 |
|
|
| ## 游戏玩法 |
|
|
| 1. **激活魔法锅**:说出 "cook cook cook pot" 来激活魔法锅 |
| 2. **选择食物**:说出任何食物的英文单词开始烹饪 |
| 3. **AI生成素材**:系统自动生成食物和相关小动物的图片 |
| 4. **食物涌出**:锅盖被顶开,食物如粒子般涌出 |
| 5. **停止烹饪**:说出 "stop stop stop pot" 停止食物产生 |
| 6. **动物出现**:当食物达到一定数量,小动物会从屏幕两侧跑来 |
| 7. **特殊彩蛋**:草莓或西瓜达到一定数量时,小女孩会从右侧出现 |
|
|
| ## 技术栈 |
|
|
| - **前端框架**:HTML5 Canvas + JavaScript |
| - **语音识别**:Web Speech API |
| - **文生图API**:集成AI图像生成服务 |
| - **动画引擎**:自定义粒子系统 |
| - **音频处理**:Web Audio API |
|
|
| ## 项目结构 |
|
|
| ``` |
| MagicPot/ |
| ├── index.html # 主页面 |
| ├── css/ |
| │ └── style.css # 样式文件 |
| ├── js/ |
| │ ├── main.js # 主游戏逻辑 |
| │ ├── voice.js # 语音识别模块 |
| │ ├── pot.js # 魔法锅类 |
| │ ├── particles.js # 粒子系统 |
| │ ├── animals.js # 动物系统 |
| │ └── textToImage.js # 文生图API接口 |
| ├── assets/ |
| │ ├── images/ # 图片资源 |
| │ ├── sounds/ # 音效文件 |
| │ └── fonts/ # 字体文件 |
| └── README.md |
| ``` |
|
|
| ## 安装和运行 |
|
|
| 1. 克隆项目到本地 |
| 2. 使用本地服务器运行(推荐使用 Live Server 或 Python HTTP Server) |
| 3. 在浏览器中打开,允许麦克风权限 |
| 4. 开始游戏! |
|
|
| ## 开发计划 |
|
|
| - [x] 项目结构搭建 |
| - [x] 语音识别功能 |
| - [x] 魔法锅UI设计 |
| - [x] 文生图API集成 |
| - [x] 粒子系统实现 |
| - [x] 动物生成系统 |
| - [x] 彩蛋功能 |
| - [x] 游戏状态管理 |
|
|
| ## 快速开始 |
|
|
| ### 方法一:使用 Python HTTP 服务器 |
| ```bash |
| # 在项目根目录运行 |
| python -m http.server 8000 |
| # 然后在浏览器中访问 http://localhost:8000 |
| ``` |
|
|
| ### 方法二:使用 Node.js |
| ```bash |
| # 安装依赖 |
| npm install |
| |
| # 启动开发服务器 |
| npm run dev |
| ``` |
|
|
| ### 方法三:直接打开文件 |
| 直接用浏览器打开 `index.html` 文件(某些功能可能受限) |
|
|
| ## 游戏控制 |
|
|
| ### 语音命令 |
| - **"cook cook cook pot"** - 激活魔法锅 |
| - **说出食物名称** - 开始烹饪(如:apple, banana, pizza等) |
| - **"stop stop stop pot"** - 停止食物涌出 |
|
|
| ### 键盘快捷键 |
| - **F12** - 切换调试信息显示 |
| - **F11** - 测试所有音效 |
| - **F10** - 切换音效开关 |
| - **Ctrl+Shift+I** - 配置文生图API密钥 |
| - **ESC** - 关闭帮助窗口 |
|
|
| ### 界面功能 |
| - **🔊 音效按钮** - 点击切换音效开关 |
| - **❓ 帮助按钮** - 点击查看详细的语音命令帮助 |
| - **🎤 语音状态指示器** - 显示当前语音识别状态 |
| - **💬 实时语音显示** - 实时显示用户的语音输入内容 |
| - **📊 性能监控** - 实时显示粒子数、动物数和FPS(烹饪时自动显示) |
|
|
| ## 支持的食物 |
|
|
| ### 水果类 |
| - apple (苹果) 🍎 |
| - banana (香蕉) 🍌 |
| - orange (橙子) 🍊 |
| - strawberry (草莓) 🍓 *彩蛋* |
| - watermelon (西瓜) 🍉 *彩蛋* |
| - grape (葡萄) 🍇 |
|
|
| ### 主食类 |
| - pizza (披萨) 🍕 |
| - burger (汉堡) 🍔 |
| - bread (面包) 🍞 |
| - rice (米饭) 🍚 |
| - noodles (面条) 🍜 |
|
|
| ### 甜点类 |
| - cake (蛋糕) 🍰 *特殊效果* |
| - cookie (饼干) 🍪 |
|
|
| ### 其他 |
| - cheese (奶酪) 🧀 |
| - fish (鱼) 🐟 |
| - chicken (鸡肉) 🍗 |
|
|
| ## 特殊功能 |
|
|
| ### 彩蛋功能 |
| - **草莓/西瓜彩蛋**:当草莓或西瓜数量达到30个时,小女孩会从右侧出现 |
| - **生日蛋糕特效**:制作蛋糕时会有特殊的生日庆祝效果 |
| - **百食庆祝**:制作100个食物时会有烟花庆祝效果 |
|
|
| ### 动物系统 |
| 不同的食物会吸引不同的小动物: |
| - 🍎 苹果 → 🐰 兔子 |
| - 🍌 香蕉 → 🐵 猴子 |
| - 🍊 橙子 → 🐦 小鸟 |
| - 🍓 草莓 → 🐻 熊 |
| - 🍉 西瓜 → 🐘 大象 |
| - 🍕 披萨 → 🐱 猫咪 |
| - 🍔 汉堡 → 🐶 小狗 |
|
|
| ## 技术特性 |
|
|
| ### 语音识别 |
| - 使用 Web Speech API |
| - 支持英文语音识别 |
| - 自动重启和错误处理 |
| - 实时状态显示 |
|
|
| ### 粒子系统 |
| - 食物涌出效果 |
| - 魔法粒子特效 |
| - 蒸汽动画 |
| - 庆祝烟花效果 |
|
|
| ### AI图片生成 |
| - 支持文生图API集成 |
| - 本地缓存机制 |
| - 备用表情符号显示 |
| - 可配置API密钥 |
|
|
| ### 动画效果 |
| - 卡通手绘风格 |
| - 流畅的Canvas动画 |
| - 粒子物理系统 |
| - 动物AI行为 |
|
|
| ### 音效系统 |
| - **程序化音效生成**:使用Web Audio API实时生成音效 |
| - **丰富的音效类型**: |
| - 🪄 魔法激活音效(上升音调带颤音) |
| - 🫧 烹饪冒泡音效(随机频率变化) |
| - 💥 食物弹出音效(短促爆破声) |
| - 🐦 动物出现音效(鸟叫声) |
| - 🔔 小女孩出现音效(闪亮铃声) |
| - 🎺 庆祝音效(三和弦号角声) |
| - 💨 停止音效(风声效果) |
| - **智能音效控制**:可开关、音量控制、随机音调变化 |
| - **性能优化**:预生成音效缓存,避免实时计算 |
|
|
| ### 性能优化 |
| - **内存管理**:智能控制粒子和动物数量上限 |
| - **自动清理**:定期清理过期和无效对象 |
| - **性能监控**:实时显示FPS、粒子数、动物数 |
| - **资源限制**: |
| - 最大粒子数:150个 |
| - 最大动物数:8只 |
| - 最大食物数:100个 |
| - 地面粒子上限:80个 |
|
|
| ## 浏览器兼容性 |
|
|
| ### 推荐浏览器 |
| - Chrome 80+ |
| - Edge 80+ |
| - Firefox 75+ |
| - Safari 14+ |
|
|
| ### 必需功能 |
| - Web Speech API(语音识别) |
| - Canvas 2D API(游戏渲染) |
| - Web Audio API(音效支持) |
| - ES6+ 支持 |
|
|
| ## 故障排除 |
|
|
| ### 语音识别不工作 |
| 1. 检查浏览器是否支持 Web Speech API |
| 2. 确保已允许麦克风权限 |
| 3. 检查网络连接(某些浏览器需要HTTPS) |
|
|
| ### 文生图功能不工作 |
| 1. 按 Ctrl+Shift+I 配置API密钥 |
| 2. 检查API密钥是否有效 |
| 3. 即使没有API,游戏也会使用备用图片正常运行 |
|
|
| ### 性能问题 |
| 1. 按F12查看调试信息 |
| 2. 检查粒子数量是否过多 |
| 3. 尝试刷新页面重置游戏 |
|
|
| ## 开发说明 |
|
|
| ### 项目结构 |
| ``` |
| MagicPot/ |
| ├── index.html # 主页面 |
| ├── css/style.css # 样式文件 |
| ├── js/ # JavaScript模块 |
| │ ├── main.js # 主游戏逻辑 |
| │ ├── voice.js # 语音识别 |
| │ ├── pot.js # 魔法锅类 |
| │ ├── particles.js # 粒子系统 |
| │ ├── animals.js # 动物系统 |
| │ └── textToImage.js # 文生图API |
| ├── assets/ # 资源文件 |
| │ ├── images/ # 图片资源 |
| │ └── sounds/ # 音效文件 |
| └── package.json # 项目配置 |
| ``` |
|
|
| ### 扩展开发 |
| - 添加新食物:在各个模块的映射表中添加新条目 |
| - 添加新动物:扩展 `animals.js` 中的动物类型 |
| - 添加新特效:在 `particles.js` 中创建新的粒子类型 |
| - 添加音效:在相应的事件中调用音频播放函数 |
|
|
| ## 许可证 |
|
|
| MIT License - 详见 LICENSE 文件 |
|
|