# doudizhu **Repository Path**: webcc/doudizhu ## Basic Information - **Project Name**: doudizhu - **Description**: h5-斗地主 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-08 - **Last Updated**: 2026-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 斗地主H5游戏 - 经典中国风 一款精美的单机版斗地主H5游戏,采用经典中国风设计,支持人机对战。 ## 项目特点 - ✨ **精美界面**: 经典中国风设计,红金配色,传统纹样装饰 - 🎮 **完整游戏逻辑**: 支持所有标准斗地主牌型 - 🤖 **智能AI**: 三个难度级别的AI对手 - 🎵 **音效系统**: 完整的游戏音效(可选) - 📱 **响应式设计**: 支持PC和移动端 - ⚡ **流畅动画**: 精美的卡牌动画效果 ## 游戏规则 ### 基本规则 - 使用54张扑克牌(含大小王) - 三人对战,一人为地主,两人为农民 - 地主获得3张底牌,共20张牌 - 农民各17张牌 ### 牌型说明 1. **单张**: 任意一张牌 2. **对子**: 两张相同点数的牌 3. **三张**: 三张相同点数的牌 4. **三带一**: 三张+单张 5. **三带二**: 三张+对子 6. **顺子**: 5张或以上连续单牌(不含2和王) 7. **连对**: 3对或以上连续对子 8. **飞机**: 2个或以上连续三张 9. **飞机带翅膀**: 飞机+单牌/对子 10. **炸弹**: 4张相同点数 11. **王炸**: 大王+小王 12. **四带二**: 炸弹+2张单牌 ### 牌力大小 - 单牌: 3 < 4 < ... < K < A < 2 < 小王 < 大王 - 王炸 > 炸弹 > 其他牌型 - 相同牌型必须张数相同才能比较 ## 文件结构 ``` 斗地主/ ├── index.html # 主页面 ├── README.md # 项目说明 ├── task_plan.md # 开发计划 ├── notes.md # 技术笔记 ├── css/ │ ├── main.css # 主样式(中国风主题) │ └── card.css # 卡牌样式 ├── js/ │ ├── card.js # 卡牌数据结构与牌型识别 │ ├── player.js # 玩家类 │ ├── ai.js # AI决策逻辑 │ ├── game.js # 游戏主控制器 │ ├── ui.js # UI渲染与交互 │ └── audio.js # 音效管理器 └── assets/ ├── images/ # 图片资源(待添加) └── sounds/ # 音效文件(待添加) ``` ## 快速开始 ### 1. 打开游戏 直接在浏览器中打开 `index.html` 文件即可开始游戏。 ### 2. 游戏流程 1. 点击"开始游戏"按钮 2. 系统自动发牌 3. 选择叫分(1-3分) 4. 叫分最高者成为地主 5. 地主先出牌 6. 按顺序出牌,直到有人出完牌 ### 3. 操作说明 - **选择卡牌**: 点击卡牌进行选择/取消 - **出牌**: 选中卡牌后点击"出牌"按钮,或按空格键 - **不出**: 点击"不出"按钮,或按Ctrl+Enter - **取消选择**: 按Esc键取消所有选择 ## 技术实现 ### 核心模块 #### 1. 卡牌模块 (card.js) - `Card` 类: 卡牌数据结构 - `CardTypeRecognizer` 类: 牌型识别 - `CardComparator` 类: 牌力比较 - 支持所有标准牌型的识别和验证 #### 2. 玩家模块 (player.js) - `Player` 类: 玩家基类 - `HumanPlayer` 类: 人类玩家 - `AIPlayer` 类: AI玩家 - 手牌管理、选牌、出牌操作 #### 3. AI模块 (ai.js) - `AIDecision` 类: AI决策引擎 - 三种难度: easy, medium, hard - 智能叫地主算法 - 策略性出牌决策 #### 4. 游戏控制 (game.js) - `GameController` 类: 游戏主控制器 - 状态机管理游戏流程 - 叫地主、出牌、结算逻辑 #### 5. UI模块 (ui.js) - `UIManager` 类: UI管理器 - 卡牌渲染 - 动画效果 - 交互处理 #### 6. 音效模块 (audio.js) - `AudioController` 类: 音效管理器 - 音效预加载 - 音量控制 - 备用音效生成 ### 设计特色 #### 中国风视觉设计 - **色彩方案**: - 中国红 (#C41E3A) - 金色 (#FFD700) - 深色背景 (#1A1A1A) - **传统元素**: - 回纹装饰 - 云纹背景 - 楷体/宋体字体 #### 动画效果 - 卡牌选择动画 - 出牌飞行效果 - 炸弹震动特效 - 胜利/失败动画 ## 扩展功能 ### 已实现 - ✅ 完整牌型识别 - ✅ 智能AI对手 - ✅ 中国风界面 - ✅ 响应式设计 - ✅ 键盘快捷键 - ⚠️ 音效系统(需添加音效文件) ### 待扩展 - ⏳ 多人对战模式 - ⏳ 记分排行榜 - ⏳ 难度选择 - ⏳ 悔牌功能 - ⏳ 出牌提示 - ⏳ 游戏回放 - ⏳ 更多AI策略 ## 浏览器兼容性 - ✅ Chrome 90+ - ✅ Firefox 88+ - ✅ Safari 14+ - ✅ Edge 90+ - ⚠️ IE 不支持 ## 性能优化 - CSS3硬件加速动画 - 事件委托减少内存占用 - 按需加载音效文件 - 防抖/节流优化交互 ## 开发说明 ### 修改AI难度 在 `game.js` 中修改AI初始化参数: ```javascript new AIPlayer(1, '电脑1', 'hard'), // 改为困难模式 new AIPlayer(2, '电脑2', 'easy') // 改为简单模式 ``` ### 添加音效 将音效文件放入 `assets/sounds/` 目录,按 `audio.js` 中的命名规则命名。 ### 自定义样式 修改 `css/main.css` 和 `css/card.css` 中的颜色和样式变量。 ## 已知问题 1. 音效文件需要手动添加 2. 某些复杂牌型的AI策略还可以优化 3. 移动端触摸体验待改进 ## 贡献指南 欢迎提交Issue和Pull Request! ## 许可证 MIT License ## 致谢 感谢所有为本项目做出贡献的开发者! --- **享受游戏,祝你好运! 🎴🎉**