跑得快人工智能自动代打训练程序设计
Posted qiuqiu-460000713
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跑得快人工智能自动代打训练程序设计相关的知识,希望对你有一定的参考价值。
最近得知快手开源了斗地主人工智能设计的源码,我迫不及待地下载观摩了他们的代码,去年我也想过用人工智能来实现斗地主的机器人算法,但阅读了一大堆资料之后,也是无从下手,没想到现在有人开了个好头,我怎能错过学习的机会。我测试过原来程序的斗地主的水平陪打还行,还有很大的提升空间,这个他们开源也是想各大高手加入研究,为此我萌生了一个把斗地主改成打跑得快的想法,因为我觉得跑得快相对斗地主简单很多,应该会效果更加好,为此我记录下我最近改造碰到的许多坑。
他这个是用了识别模块来进行界面截图识别扑克功能,识别原理是这样的:先截图游戏窗口全图,然后在全图里面和你要找的图像进行对比,所以首先要对你的游戏所用到的扑克,和打牌按钮截图
手牌和出牌各一套,不要想着用原来他们截好的一套图,虽然相似,但凡有一张有问题,都是个麻烦事,最好是你想玩那个游戏,就截图那个游戏一套图,这样保证100%没问题,这个识别准确率相当高,目前识别率真是100%。游戏当中我还没发现有一次识别出错的呢?比我以前见到的识别准确率高很多了,时代在进步啊。
准备好材料之后,第一步程序启动就要找到识别你游戏的窗口,如何准确地找到你游戏的窗口呢?
spy++工具自然少不了,这个是识别窗口神器,找到类名,和窗口标题就行了,程序代码会用到
这个工程有很多硬编码,窗口大小需要改动的,因为你识别的游戏窗口和他们原来的斗地主是不一样的。
图像搜索区域也是要注意的一个事项,如果搜索区域大于你的截图了,那么也是会异常的。
以上是识别问题,下面讲下改造逻辑思路
斗地主改造跑得快思路就是你一直扮演地主身份和其他玩家打牌,我做的是二人跑得快,那么就是一直是地主身份和地主下家打牌,三人的也没问题。只要一直定位自己是固定地主角色就行。但跑得快里面要有一个规则是管得上要管,这时你可以选择他返回的结果里面进行有牌操作的最优选项,如图改造算法
还有一些牌型问题,跑得快最后一下才可以三带一,和三不带,还可以三带两个单,这些规则都是可以灵活修改添加的,如图
经过10天研究与修改,终于可以跑起来了,效果图如下
这只是调试运行的程序,想要各个电脑都能用,还得打包成exe程序,这次用到的打包工具是以下两样
pip install pyinstaller
没有pip的先安装pip我是按这个来安装的Windows系统安装pip方法 - lovesoo - 博客园,
安装好pyinstaller后,只需要简单一个打包命令即可
pyinstaller main.py
等待打包完成,main.py的当前目录下会有dist目录,目录下会有main目录,里面有打包好的main.exe文件,这时还需要把程序用到的两个动态加载资源目录放到exe根前,如下图
运行效果是带命令窗口的,容易查看那里出错了,
至此可以说一个完整的人工智能代打跑得快程序设计基本功能完整了。
代打水平陪练还行,还有待训练提高和进行算法调整,以后有时间还会深入研究和提高,有兴趣的朋友可以联系我,欢迎一起研究和学习。
以上是关于跑得快人工智能自动代打训练程序设计的主要内容,如果未能解决你的问题,请参考以下文章