Skip to content

FlysonBot/poker-counter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

177 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

斗地主记牌器

欢迎使用斗地主记牌器!这是一个专为中游(中国游戏平台)斗地主设计的辅助工具,支持标准54张牌的斗地主游戏。它能够实时跟踪游戏中已出的牌和剩余的牌,帮助玩家做出更明智的决策。

功能特点

  • 实时记牌:自动识别并记录已出的牌,实时更新剩余牌数。
  • 多窗口显示:主窗口显示所有牌的剩余数量,左右窗口分别显示上家和下家的出牌情况。
  • 可视化区域调整:首次启动时自动显示粉色叠加层,用户可直接拖动调整各识别区域的位置和大小,无需手动修改坐标。
  • 自动缩放校准:程序会在每局游戏开始时自动根据手牌大小校准模板缩放比例,无需手动配置即可适配不同分辨率。
  • 颜色提示:主窗口红色标注我没有的牌,方便推算对手持牌;左右窗口红色标注对手同一回合出了多张的牌。
  • 窗口位置记忆:所有窗口均可拖动,位置会自动保存,下次启动时自动恢复。
  • 高度可自定义:可自定义阈值、窗口透明度、快捷键等,详见 config.yaml

软件工作原理

程序启动后定时对游戏窗口截图,通过 OpenCV 模板匹配识别牌型。游戏开始通过检测剩余牌数区域中显示"[20 张]"的玩家位置来判断地主,游戏结束则通过检测顶部出现的三张底牌来判断。识别到地主后,程序会自动分析手牌高度,校准当前屏幕的模板缩放比例。游戏进行中,程序持续对比相邻帧的出牌区域,检测到变化时记录出牌。界面使用 Tkinter 编写,识别在后台线程运行。

如何使用

  1. Release 页面下载最新版本,解压到任意位置。
  2. 启动 main.exe
  3. 首次启动时程序会自动显示区域调整叠加层(粉色边框),拖动各边框使其对准游戏画面中对应的区域,完成后按 C 键隐藏。
  4. 点击「打开记牌器」开始记牌。
  5. 更多选项可在 config.yaml 中自定义。

注意事项

  • 程序仅支持 Windows。
  • 程序通过窗口标题定位游戏窗口,默认搜索标题含「斗地主」的窗口,如有不同请修改 config.yaml 中的 GAME_WINDOW_TITLE
  • 如果识别效果不好,可尝试调低 config.yaml 中的 card 阈值,或通过叠加层重新调整区域位置。

负责任地使用软件

该软件旨在帮助记忆力较差的长者更好地体验游戏。请勿以违反游戏使用条款的方式使用该软件。

该软件仅供学习和研究使用,不得用于商业用途。

有问题或建议?

如有任何问题或建议,欢迎在 Issues 中提出。若遇到错误提示,请附上日志文件(按 L 键打开),并详细描述问题发生前后的情况。若识别出错,请上传屏幕录屏和配置文件。

欢迎分享和贡献

喜欢这个项目?欢迎分享和贡献!为项目加星星可以帮助更多人发现它。如果你会编程,也非常欢迎提交 Pull Request。

开发人员说明

如欲为该项目贡献代码,请按照以下步骤配置开发环境:

  1. 安装任意 Python 环境,并安装 uv 作为包管理器:

    pip install uv
  2. Fork 本项目并克隆到本地:

    git clone https://github.com/your-username/poker-counter.git
    cd poker-counter
  3. 安装项目依赖(uv 会自动创建虚拟环境):

    uv sync --all-groups
  4. 在 IDE 中选择 .venv/Scripts/python.exe 作为 Python 解释器,即可开始开发。

编译程序

在 Windows 上运行编译脚本:

.\compile.ps1

编译完成后,程序位于 dist/main/ 目录下,并自动打包为 zip 文件(含版本号)。如需跳过打包步骤:

.\compile.ps1 -nozip