# PigCatchGame **Repository Path**: applicationpig/pig-catch-game ## Basic Information - **Project Name**: PigCatchGame - **Description**: 我这个游戏叫抓小猪 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-05-18 - **Last Updated**: 2026-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🐷 抓小猪 复刻"羊了个羊"玩法的瓦片消除小游戏,C++ 后端 + HTML5 Canvas 前端。 ## 🎮 玩法 点击牌堆中未被遮挡的瓦片,将其移入底部槽位。凑齐 **3 个相同图案** 即自动消除并加分。槽位满 7 个则游戏失败,全部消除则通关。 ### 两种模式 | 模式 | 说明 | |------|------| | 🏆 **经典模式** | 第 1 关极简单(入门练手),第 2 关地狱难度(通关率 ~0.1%) | | 🎯 **闯关模式** | 难度平滑递增,无限关卡,层数和瓦片数随关卡增加 | ### 三种道具 | 道具 | 功能 | 数量 | |------|------|------| | ⬅ **移除** | 撤回槽位中最后放入的 3 个瓦片,放回牌堆 | ×1 | | 🎯 **凑齐** | 在槽位中已有 2 个相同瓦片时,自动从牌堆找一个可点击的配对完成消除 | ×1 | | 🔀 **打乱** | 随机重新排列剩余瓦片的位置 | ×1 | ## 🐷 每日主题 根据系统日期自动切换,一周 7 天不重样: | 星期 | 主题 | 瓦片图案 | |------|------|----------| | 周一 | 🍔 美食猪 | 🐷 🍔 🍕 🍣 🍰 🍉 🍦 🍩 🍟 🎂 | | 周二 | ⚽ 运动猪 | 🐷 ⚽ 🏀 🎾 ⚾ 🏈 🏓 🏊 🛹 🥊 | | 周三 | ✈️ 旅行猪 | 🐷 ✈️ 🚂 🚗 🚢 📷 🗺️ 🧳 🛂 🧭 | | 周四 | 🎵 音乐猪 | 🐷 🎸 🎹 🥁 🎵 🎧 🎤 🎻 🎷 💿 | | 周五 | 🚀 太空猪 | 🐷 🚀 🪐 👨‍🚀 🛸 🛰️ ☄️ 🌙 ⭐ 🔭 | | 周六 | 🎉 派对猪 | 🐷 🎈 🎁 🎂 🎊 🍾 👑 🎭 🎆 🏮 | | 周日 | 🌿 自然猪 | 🐷 🌸 🌳 ☀️ 🍄 🌈 🍃 ☁️ 🌵 🦋 | ## 🏗 技术架构 ``` 浏览器 (HTML5 Canvas) │ HTTP POST ▼ C++ 游戏服务器 (cpp-httplib) │ ├── 每日主题管理 (DailyTheme) ├── 关卡生成器 (LevelGenerator) ├── 牌堆管理 (TileManager) ├── 槽位管理 (SlotManager) ├── 道具系统 (PropSystem) └── 游戏状态机 (GameState) ``` ### 技术选型 | 层面 | 技术 | |------|------| | 后端语言 | C++17 | | HTTP 服务 | [cpp-httplib](https://github.com/yhirose/cpp-httplib) (header-only) | | JSON | [nlohmann/json](https://github.com/nlohmann/json) (header-only) | | 前端渲染 | HTML5 Canvas 2D + 原生 JS | | 音频 | Web Audio API(程序化音频合成) | | 构建 | CMake 3.15+ | ### 核心机制 - **遮挡判断**:上层瓦片覆盖(dx≤1 && dy≤1)+ 同层左右夹击检测 - **关卡生成**:经典模式固定参数,闯关模式层数/格子/图案数递增 - **音效系统**:点击"啵"声、匹配小猪哼哼、失败下降音,以及 C 大调循环背景音乐 ## 🚀 快速开始 ### 前置条件 - CMake 3.15+ - C++17 编译器(MSVC / GCC / Clang) - Windows 需额外安装 LLVM-MinGW(如使用 clang) ### 构建 ```bash # 克隆仓库 git clone https://gitee.com/applicationpig/pig-catch-game.git cd pig-catch-game # 下载依赖头文件放入 external/ 目录: # external/cpp-httplib/httplib.h # external/nlohmann/json.hpp # CMake 构建 cmake -B build cmake --build build ``` ### 运行 ```bash ./build/piggy_game # 浏览器打开 http://localhost:8080 ``` ## 📁 项目结构 ``` Cgame/ ├── CMakeLists.txt ├── external/ │ ├── cpp-httplib/httplib.h │ └── nlohmann/json.hpp ├── src/ │ ├── main.cpp # 程序入口 │ ├── server/ │ │ ├── HttpServer.h # HTTP 静态文件 + API 路由 │ │ └── WsHandler.h # 请求处理分发 │ ├── game/ │ │ ├── Types.h # 基础类型枚举 │ │ ├── DailyTheme.h # 每日主题(7套emoji) │ │ ├── LevelGenerator.h # 关卡生成(经典/闯关) │ │ ├── TileManager.h # 牌堆 + 遮挡判断 │ │ ├── SlotManager.h # 槽位 + 3连消除 │ │ ├── PropSystem.h # 道具系统 │ │ └── GameState.h # 游戏状态聚合 │ └── utils/ │ ├── Random.h │ └── Logger.h ├── web/ │ ├── index.html # 主页面(菜单 + 游戏界面) │ ├── css/style.css # 猪猪粉色系样式 │ └── js/ │ ├── main.js # 入口 + 状态管理 │ ├── renderer.js # Canvas 渲染 + 动画特效 │ ├── input.js # 点击/触摸处理 │ ├── network.js # HTTP API 通信 │ ├── ui.js # UI 状态更新 + 弹窗 │ └── bgm.js # Web Audio 音乐音效 └── README.md ``` ## 🎛 API 接口 所有接口均为 HTTP POST,Content-Type: application/json。 ### 获取主题 ``` POST /api/theme 请求: {"action": "get_theme"} 响应: {"type":"theme_info", "name":"美食猪", "emoji":"🍔", "tile_emojis":[...], "tomorrow":{...}} ``` ### 初始化游戏 ``` POST /api/init 请求: {"action": "init_game", "mode": "classic|challenge", "level": 1} 响应: {"type":"game_state", "tiles":[...], "slots":[...], "props":{...}, "score":0, "status":"playing"} ``` ### 点击瓦片 ``` POST /api/click 请求: {"action": "click_tile", "tile_id": 42} 响应: {"type":"click_result", "success":true, "matched":false, "game_over":false, "state":{...}} ``` ### 使用道具 ``` POST /api/prop 请求: {"action": "use_prop", "prop": "undo|gather|shuffle"} 响应: {"type":"game_state", ...} ``` ## 🎨 界面预览 ``` ┌────────────────────────────────────────────────────┐ │ 🐷 抓小猪 [经典] 🍔美食 第2关 分数: 1200 │ ├────────────────────────────────────────────────────┤ │ ┌──────────────────┐ │ │ │ 🍰 🍕 🍣 │ │ │ │ 🍔 🍉 │ 480×480 │ │ │ 🎂 🍦 🍩 │ Canvas │ │ │ 🍟 🐷🐷 │ │ │ │ 🍉 🍔 🍰 │ │ │ └──────────────────┘ │ ├────────────────────────────────────────────────────┤ │ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │ │ │🍕 │ │🐷 │ │ │ │ │ │ │ │ │ │ │ │ │ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ │ ├────────────────────────────────────────────────────┤ │ [⬅移除×1] [🎯凑齐×1] [🔀打乱×1] 🔊 │ └────────────────────────────────────────────────────┘ ``` ## 📄 License MIT