手机app跑得快游戏自动代打程序设计

自从上次写了一个h5版本的自动代打,识别准确度非常高,就有了想写一个手机app版本的试试,最近刚好碰上了疫情被困,闲来无事,ny就做出了一个跑得快自动代打程序,效果非常好,先睹为快。视频效果在这https://live.csdn.net/v/192063

说到自动代打就谈到图像识别问题,以前尝试过用按钮精灵进行图像识别处理,效果非常之差,首先就要用到蹩脚的易语言,识别的准确率(Precision)就只有80%左右,准确率(Precision)就算是90%对于代打程序来说都是致命的,没法使用。后来得知python的图像识别准确率(Precision)达99%,那真的是太好了。我就用pc版本的h5程序测试了一下,果真好用,但可惜人工智能(Artificial Intelligence)部分的训练一直是个迷,其智能效果并不理想,于是就有了采用C++算法处理的非人工智能(Artificial Intelligence)版本。

主要分为两部分设计,识别是采用python来做,C++做出牌算法处理,为什么采用C++,是因为python性能上吃不消,而且本来算法也是C++现成的,所以也是顺其自然的事,这里插一句,采用python的好处相当多,功能模块之多如天上牛毛,还有易于使用学习,方便将来扩展,唯一的缺点就是性能低效。关于python如何调用C++这一部分也是进行了两天的学习和测试,才能正常使用,请看代码示例

        from ctypes import *
def dllCall(self,HandCardData,TurnCardData,DiscardData,bPass):

        class tagInPyhonNew(Structure):
            _fields_ = [("cbHandCardData", c_ubyte* 20),
                        ("cbHandCardCount", c_ubyte),
                        ("cbTurnCardData", c_ubyte* 20),
                        ("cbTurnCardCount", c_ubyte ),
                        ("DiscardCard", c_ubyte * 54),
                        ("cbDiscardCardCount", c_ubyte),
                        ("cbRangCardCount", c_ubyte ),
                        ("cbOthreRangCardCount", c_ubyte),
                        ("cbCardCount", c_ubyte),
                        ("cbResultCard", c_ubyte * 20)
                        ]
        pDll = CDLL("./testC++.dll")
        arg1 = tagInPyhonNew()
        tmpHandCard=self.changeDataOut(HandCardData)
        tmpTurnCard=self.changeDataOut(TurnCardData)
        tmpDiscard=self.changeDataOut(DiscardData)
        tmparray=c_ubyte * MAX_COUNT
        tmparray2 = c_ubyte * FULL_COUNT
        arg1.cbHandCardData=tmparray()
        arg1.cbTurnCardData = tmparray()
        arg1.cbResultCard = tmparray()

        arg1.DiscardCard = tmparray2()

        arg1.cbCardCount=0
        arg1.cbOthreRangCardCount=0
        if bPass :
            arg1.cbRangCardCount = 1
        else:
            arg1.cbRangCardCount = 0

        func=pDll.fntestPython2
        result = func(byref(arg1))
        print("action:")
        returnCardData=[]
        for i in range(0,arg1.cbCardCount):
            returnCardData.append(arg1.cbResultCard[i])
            print(arg1.cbResultCard[i])

        return self.changeDataIn(returnCardData)

以上是关于python如何传递结构体和数组的调用C++dll的经典实战代码。

关于识别部分功能,采用的是雷电模拟器下载手机app来进行使用,根据我的使用经验,雷电要比夜神更加稳定好用。这里就采用了4.0版本的雷电模拟器来进行游戏,效果如下

手机app跑得快游戏自动代打程序设计

识别代码的细节在上一篇关于人工智能(Artificial Intelligence)运行快速程序生成的文章中讨论过,这里不再赘述。这个版本的识别效果和子播放效果都比之前的好

基于这个原理,无论你是扑克,麻将,捕鱼,或者是记牌器,都可以通过这样的方式去实现。这里还有遗憾的地方就是不能在手机上安装使用,只能在pc上使用,不是很方便。关于如何打包到手机上使用也还需要去学习研究,希望懂得将python程序打包成apk供手机使用的朋友私信我,共同交流(stream)学习进步。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年3月25日
下一篇 2022年3月25日

相关推荐