Skip to content

EdgeYu/PokerUtil

Repository files navigation

扑克与麻将工具集 (PokerUtil)

一个基于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

📱 使用指南

德州扑克功能

基本操作

  1. 选择手牌:从右侧牌库中选择2张手牌
  2. 选择公牌:继续选择3-5张公牌(翻牌、转牌、河牌)
  3. 自动分析:系统会自动计算并显示分析结果

分析结果解读

  • 我的目前最大牌型:基于当前已出现的所有牌计算的最佳5张牌组合
  • 我未来的最大牌型:考虑未出现的河牌,预测可能的最佳牌型
  • 对手可能的最大牌型:模拟对手可能的手牌组合,分析对手最大牌型

麻将听牌器功能

基本操作

  1. 进入听牌器:从麻将主页点击"听牌器"按钮进入
  2. 选择牌张:从下方牌库中选择麻将牌张添加到14张牌墙中
  3. 自动分析:系统实时分析听牌状态和胡牌类型

功能特点

  • 智能限制:自动限制最多两个花色和单牌最多4张
  • 实时反馈:动态显示听牌候选牌和胡牌类型
  • 一键清理:支持快速清空牌墙重新开始

胡牌类型识别

  • 七对:所有牌能分成七对
  • 龙七对:七对中存在四张相同的牌
  • 平胡:标准胡牌(一对将+四个面子)
  • 对对胡:平胡且所有面子都是刻子

通用操作

  • 导航:使用页面顶部的导航按钮在不同功能间切换
  • 响应式:适配桌面和移动设备的不同屏幕尺寸

🎴 牌型规则

牌型优先级(从高到低)

  1. 皇家同花顺 (Royal Flush) - A,K,Q,J,10同花
  2. 同花顺 (Straight Flush) - 五张连续同花牌
  3. 四条 (Four of a Kind) - 四张相同点数牌
  4. 葫芦 (Full House) - 三条加一对
  5. 同花 (Flush) - 五张同花牌
  6. 顺子 (Straight) - 五张连续牌
  7. 三条 (Three of a Kind) - 三张相同点数牌
  8. 两对 (Two Pair) - 两个不同的对子
  9. 一对 (One Pair) - 一对相同点数牌
  10. 高牌 (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来改进这个项目!

开发流程

  1. Fork本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建Pull Request

📄 许可证

本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

感谢所有为这个项目做出贡献的开发者!


注意:本工具仅供学习和娱乐用途,请勿用于真实货币的扑克游戏。

About

A tool for Mahjong and Texas Hold'em

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages