【庆六·一】用python给孩子做了个小游戏

        做游戏?还拿现在小孩当以前呢?小破游戏孩子喜欢才怪!用python帮娃写了一个游戏的自动挂机脚本才是正事!这样娃就可以放下手机,出去和我踢球了!即保护了眼睛,锻炼了身体,陶冶了情操,又增进了和孩子的关系,还让孩子觉得自己老爸很厉害。

        考虑到不能触发游戏的风控把孩子的账号给弄封了,还要快速安全的实现好几个游戏的自动挂机脚本。所以我选择了 airtest 框架。可能做过自动化测试或者自动化运维的同事们都听过这个工具。其实airtest最主要的亮点,就是图片相似度匹配。也就是说你可以把游戏的各个画面截图,然后根据事先设计好的程序,点击或者拖拽等操作,实现自动化刷图和恶心的每日任务。关于airtest的安装和demo其实很简单,网上到处都是。就是截图然后点击操作就好,但是你要有一些套路去写,这样才能智能一些,抵御一些意外风险。 所以本文就具体说下这些脚本设计:

        以下是几种我娃最爱玩的游戏,就不说名字了袄~ 

        1.横版自动刷图挂机类游戏(图片来源于网络,和本文无关)

如上图,一般来说,这种游戏不费力,就是挂机而已。但是每天依然会有重复的副本和活动,需要你去点击和看着,每个活动间隔时间都很长,一套下来至少也要耗掉你半小时。娃其实已经不想玩了,但是又舍不得这些活动奖励。于是脚本上!

脚本设计思维:首先登录,就把游戏弄到桌面上,点击即可启动,等待几秒后。进入游戏。

之后脚本分为三个模块: 每日任务触发模块、奖励收集模块、具体任务模块(如挖矿游戏) 。

除此之外,还有一条主线程和子线程。主线程负责调用上述三个模块进行串联实现整个流程,子线程负责监控和修复。监控如一些突然出现的飞舞宝箱的获取,还有万一主线程出现异常,进入了不该进入的界面,子线程则需要进行复原工作。 子线程用python的thread模块即可。但是airtest的ide上实现这些并不简单,你可以用pycharm来打开airtest的项目,这样各种复杂架构就好写多了,但是这样做有个问题,就是离开airtest专用IDE后,各种图片寻址会出错,你需要设置一下图片的目录为根目录(或干脆修改每一个图片引用的路径为相对路径),还有就是适当进行测试,修改一下各个图片的相似度判定,不要太高,否则会报错,也不要太低。选取关键点击图片的时候,切记选那些当前页面没有其他相似的部分。就比如上图中,三个绿色的入场按钮,如果你截图只截了按钮内部,那脚本就只会不断地点击第一个,你可以单独截图的时候截大一点,包括按钮四周的背景图。

        2. 随机升级小怪割草类(图片来源于网络,和本文无关)

这种游戏最近也很火。脚本设计如下:

模块:每日任务触发模块、奖励获取模块、移动和选技能模块。

依然是一个主线程和一个子线程 ,主线程负责调用安排,子线程负责监控修复。

但相比起上面的游戏,这种游戏多了个操作在里面,需要一定的走位。这种时候你有两种办法。

办法1是尽量自动刷低等级的关卡,被打也死不了。

办法2是尽量躲敌人,这个游戏的特点是所有怪物都直线的朝你飞来,你要再360°的方向上躲闪。所以哪个方向有没有敌人,你通过图片节选是可以发现的。先截取怪物的图片备用。然后在屏幕中心向外侧大概1厘米远的方向切分成几十小块,每块多少角度这样。然后每一块都判断是否有敌人的图片出现,挑选其中最少得进行该角度的拖拽移动操作。大概每2秒循环执行上述算法,就可以让你的飞机不断的去躲靠近的敌人了。如果你不嫌麻烦,可以把切分的角度更细致,判断的小块更多,循环的频率更快。移动的速度更快。

        3. 自走棋类手机游戏 (图片来源于网络,和本文无关)

启动游戏后,设置好要出的阵容的角色图片。每次选棋子的时候,都判断是否存在,不存在就点第一个。存在就点阵容目标。装备也是自动穿。当出现阵容人数过多的时候,就随机卖掉非阵容人物。

当然这样的下法基本没有吃鸡的可能,每一句都是后四位的排名.... 因为是启动脚本操作,所以输赢就别太看重了,主要胜在不知疲倦的连续刷经验和做每日。

好了,六一就这样过吧,解放孩子的双手和眼睛,让孩子从沉迷游戏转变到沉迷技术。

让他从小就明白:

“技术才是第一生产力” 

 希望以后能走上一条科研的道路,用技术为国家做贡献!

猜你喜欢

转载自blog.csdn.net/qq_22795513/article/details/130977328