一个基于React + TypeScript开发的德州扑克牌型分析和麻将听牌器工具集,提供专业的扑克牌型分析和麻将听牌识别功能。
- 实时牌型识别:自动识别皇家同花顺、同花顺、四条、葫芦等所有德州扑克牌型
- 牌型比较系统:严格按照德州扑克规则进行牌型比较,支持同牌型间的精确比较
- 胜率计算:基于蒙特卡洛模拟计算实时胜率
- 多维度分析:提供当前最大牌型、未来最大牌型和对手可能牌型分析
- 智能牌型预测:考虑未出现的河牌,预测未来可能的最佳牌型
- 对手牌型模拟:模拟对手可能的手牌组合,分析对手最大牌型
- 听牌识别:自动识别麻将手牌的听牌状态和可胡牌型
- 胡牌类型判断:支持七对、龙七对、平胡、对对胡等多种胡牌类型
- 智能限制:自动限制手牌花色数量(最多两个花色)和单牌数量(最多4张)
- 可视化牌墙:14张牌墙布局,支持拖拽式牌张管理
- 实时听牌提示:动态显示当前手牌的听牌候选牌张
- 可视化标记:使用颜色标记区分不同功能区域
- 响应式界面:适配不同屏幕尺寸的现代化UI设计
- 路径别名支持:使用
@pages和@components路径别名,代码组织更清晰
- Node.js 16.0+
- npm 或 yarn
# 克隆项目
git clone <repository-url>
cd poker-rutil
# 安装依赖
npm install
# 启动开发服务器
npm run dev# 构建生产版本
npm run build
# 预览生产版本
npm run preview- 选择手牌:从右侧牌库中选择2张手牌
- 选择公牌:继续选择3-5张公牌(翻牌、转牌、河牌)
- 自动分析:系统会自动计算并显示分析结果
- 我的目前最大牌型:基于当前已出现的所有牌计算的最佳5张牌组合
- 我未来的最大牌型:考虑未出现的河牌,预测可能的最佳牌型
- 对手可能的最大牌型:模拟对手可能的手牌组合,分析对手最大牌型
- 进入听牌器:从麻将主页点击"听牌器"按钮进入
- 选择牌张:从下方牌库中选择麻将牌张添加到14张牌墙中
- 自动分析:系统实时分析听牌状态和胡牌类型
- 智能限制:自动限制最多两个花色和单牌最多4张
- 实时反馈:动态显示听牌候选牌和胡牌类型
- 一键清理:支持快速清空牌墙重新开始
- 七对:所有牌能分成七对
- 龙七对:七对中存在四张相同的牌
- 平胡:标准胡牌(一对将+四个面子)
- 对对胡:平胡且所有面子都是刻子
- 导航:使用页面顶部的导航按钮在不同功能间切换
- 响应式:适配桌面和移动设备的不同屏幕尺寸
- 皇家同花顺 (Royal Flush) - A,K,Q,J,10同花
- 同花顺 (Straight Flush) - 五张连续同花牌
- 四条 (Four of a Kind) - 四张相同点数牌
- 葫芦 (Full House) - 三条加一对
- 同花 (Flush) - 五张同花牌
- 顺子 (Straight) - 五张连续牌
- 三条 (Three of a Kind) - 三张相同点数牌
- 两对 (Two Pair) - 两个不同的对子
- 一对 (One Pair) - 一对相同点数牌
- 高牌 (High Card) - 无以上牌型,比较最高牌
- 同花顺:比较最高牌值,A-5顺子作为下顺处理
- 四条:先比较四条的值,再比较踢脚
- 葫芦:先比较三条的值,再比较对子的值
- 三条:比较三条的值,再比较剩余牌
- 两对:先比较大对子,再比较小对子,最后比较踢脚
- 一对:比较对子值,再比较剩余三张牌
- 高牌/同花:按牌值从大到小依次比较
src/
├── pages/
│ ├── mahjong/ # 麻将相关页面
│ │ ├── MahjongPage.tsx # 麻将主页面
│ │ └── MahjongTingPage.tsx # 麻将听牌器页面
│ ├── poker/ # 德州扑克相关页面
│ │ ├── PokerPage.tsx # 扑克主页面
│ │ └── PokerAnalyzerPage.tsx # 扑克分析页面
│ └── HomePage.tsx # 应用主页
├── components/ # 共享组件
├── types/ # 类型定义
└── App.tsx # 应用入口
项目配置了路径别名,支持更清晰的导入方式:
@pages/*→src/pages/*@components/*→src/components/*
PokerAnalyzerPage.tsx- 包含所有扑克牌型分析逻辑- 主要函数:
getDetailedHandScore(),calculateHandStrength(),getBestHand(),compareHands()
MahjongTingPage.tsx- 麻将听牌识别和胡牌判断逻辑- 主要函数:
isSevenPairs(),canFormStandardWin(),countMap(),suitsUsed()
- 前端框架:React 18 + TypeScript
- 构建工具:Vite
- 样式:Tailwind CSS
- 路由:React Router
- 开发工具:ESLint + Prettier
- 扑克学习:理解各种牌型的形成条件和比较规则
- 实战分析:实时分析当前手牌的牌力,预测未来牌型发展
- 策略研究:研究不同位置和牌面的最佳策略
- 麻将训练:帮助麻将爱好者练习听牌识别和胡牌判断
- 实战辅助:在实际游戏中快速判断听牌状态和可胡牌型
- 规则学习:学习麻将的各种胡牌类型和限制规则
- 娱乐休闲:作为休闲娱乐工具使用
- 教学演示:用于扑克和麻将规则的教学演示
- 牌型识别:使用组合数学方法从所有可能的5张牌组合中找出最佳牌型
- 胜率计算:采用蒙特卡洛模拟,统计大量随机发牌场景的胜率
- 七对判断:检查所有牌是否能分成七对,支持四张算两对(龙七对)
- 标准胡牌:递归算法判断是否能形成一对将+四个面子(顺子或刻子)
- 花色限制:自动限制手牌最多包含两个花色,符合麻将实战规则
- 牌张计数:使用Map结构高效统计牌张数量和花色使用情况
欢迎提交Issue和Pull Request来改进这个项目!
- Fork本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建Pull Request
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
感谢所有为这个项目做出贡献的开发者!
注意:本工具仅供学习和娱乐用途,请勿用于真实货币的扑克游戏。