使用 Python+Selenium制作Flash游戏辅助

知道 Selenium 用来测试或爬取动态内容,还真没想过用来做游戏外挂

作者:sincerefly

来源:https://blog.yasking.org/a/selenium-whereismouse.html

之前玩过一款游戏鼠标在哪里,如果说吸引人的地方莫过于在Linux下,这个游戏有BUG,于是,印象中我当时玩了一个多小时。

偶然想起这款游戏,又去玩了一会,突然想到最近用的selenium driver似乎可以自动化完成这个事情,想来应该可行

思考了一下,用selenium自动登录倒是很好搞定,但是想要确定点击位置就比较麻烦。因为是Flash游戏,不能打代码的主意,倒是可以截图分析图片,最初的想法是保存一个没有圈圈的图片,然后拿有圈圈的图片做对比,找出差异的地方,进行定位,我没有这么做,不知道PIL能不能做这个事情。在搜索的过程中,找到了更好的方法,使用OpenCV的函数可以识别圆。

整体流程如下:

QQ登录

selenium模拟登录很简单,唯一需要注意的就是操作登录框的时候需要切换iframe,当登录完成后返回之前的环境

开始游戏

进入游戏页面后,延时10s等待游戏加载完成,然乎使用selenium获取元素定位

这个location就是element相对于网页的位置,也就是游戏窗口左上角的位置。size就是element的长宽,查看网页源代码,和它们定义的 大小是一致的。换言之,selenium的位置尺寸单位都是px,更方便接下来的计算

因为开始按钮的位置是固定的,直接在location基础上算出来坐标点击即可

截图

selenium没有 功能,只能截展示出来的窗口,不过有了游戏窗口的左上顶点坐标和游戏窗口的长宽,可以使用PIL从整张图片中截取出游戏窗口

因为设置显示器大小为1366x768,这个网站在游戏加载后会有一个向下滚动使得游戏窗口位于屏幕中间的操作,因为游戏窗口相对于浏览器窗口向上移动了,所以截图出来的位置就会包含游戏窗口的下半部分和一百多像素的无关区域, 根据截图位置进行调整的数值。我没在更大的屏幕上测试,也许不具有通用性。

获取圆坐标

下面这篇文章很棒,详细讲解了使用OpenCV识别图像中圆的坐标。

我在他给的demo的基础上,简单修改下放在函数里,以便循环调用

点击

将以上功能在main中拼接起来,这个辅助工具就能正常工作啦,先登录,然后加载游戏,开始游戏,进入循环(获取截图,解析圆坐标,点击),点击后需要给一个两秒钟的sleep,不然下一个圆还没出现,并且升级后的提示"恭喜你"什么的也是会影响圆出现的时间,如果恰巧截图中没有出现圆,那么需要休息一下,继续截图,解析,点击。这样做的原因除了避免没有截取到圆的情况,也因为有时即使正确的出现圆,解析圆坐标的函数还是不能获取到坐标。这时,需要手动点击一下,毕竟要是让程序自己蒙一个,5次机会可能很快就用完了。不过遗憾的是,识别率不仅到不了100%,随着圆越来越小,识别率回越来越低,也就不能让这个辅助程序全自动,只能半自动化。至此,虽然不完美,有很多瑕疵,不过功能和流程是完善的

完整代码:

最后,贴个玩了几分钟的战绩。

没错,那个历史最佳就是当年蛋疼的玩了一个多小时的成果...

题图:pexels,CC0 授权。

本文来自企鹅号 - 编程派媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python小白到大牛

python老司机带你玩玩炫酷的3D渲染,酷毙了!

自从学会了turtle模块后,画了不少简笔画。像小猪佩奇、哆啦A梦等等,但是这些依然不能让身边人感受到python的强大,依然是每次装逼必被打脸。就像你用tur...

3182
来自专栏Pytorch实践

游戏推动微信小程序生态,跳一跳小游戏开发

2507
来自专栏钱塘大数据

钱塘干货 | 数据收集和处理工具一览

进入大数据时代,调查报道愈加成为信息战。从哪里收集有效数据?如何抽取、筛选、整合、分类大量琐碎的信息?如何分享、存储数据,并实现随取随用?钱塘君整理了一张数据收...

4317
来自专栏非著名程序员

超级实用:小而精,优而美的开源库,开年第一篇有意思的分享

昨天是元旦,新年的第一天,估计细心的读者可能发现了,我昨天发起了一个抽奖送书活动,而且发布的时间正好是1月1号11点11分。这可不是一个巧合,这是我故意为之,是...

2206
来自专栏菩提树下的杨过

Flash/Flex学习笔记(12):FMS 3.5之如何做视频实时直播

硬件条件:一个摄像头 + 一台FMS服务器即可 原理:摄像头实时采集视频源,然后推送到FMS服务器,其它客户从FMS上获取视频流。 需要做二个fla,一个用于向...

1868
来自专栏PPV课数据科学社区

【学习】Python可视化工具概述-外文编译

本文由 PPV课 - korobas 翻译,未经许可,禁止转载! 原文翻译链接:http://pbpython.com/visualization-tools...

3967
来自专栏伪君子的梦呓

用 Python 查看微信好友位置信息

0 前言 上一次是用 itchat 这个包,然后把好友的性别比例打印出来,并且弄出了饼图和柱状图,今天还是使用 itchat 这个包,不过是用来看一下微信好友...

3055
来自专栏钱塘大数据

【干货】让你用Excel做出强大漂亮的数据地图

看了大部分关于如何用excel做数据地图的回答,感觉最费劲的地方都在地图素材上,有用多边形描出来的(有点儿累),有推荐excel插件的(不喜欢依赖插件或软件包)...

1653
来自专栏JackieZheng

自己动手写可视化软件(代码已开源)

  一年多前,那时候我还在实习,正好上一个项目接近的尾声,紧随而来的就是一个大数据一体化的项目,包括了数据的采集、处理、计算、整合以及数据展示等。   而可视化...

2399
来自专栏数据科学与人工智能

【数据可视化】让效率“爆表”的49个数据可视化工具

工欲善其事,必先利其器。好的工具可以大大提升你的工作效率,并获得身边人的羡慕和赞赏。今天,我们就来向小伙伴们分享一大波非常实用的工具,武装你的大脑。 ▲图表类...

3817

扫码关注云+社区