当前位置: 首页 > news >正文

2014中秋节,用java为QQ游戏美女找茬写辅助

引子

今年中秋闲在家,总要找点事做。
前几天开始学python,很早之前就有计划拿下这门语言了,可惜一直拖到现在……不可否认,我也是个拖沓症患者。在学习python的过程中,我很想了解这门语言适合做什么,能做什么,然后,从互联网海量信息中得知,python不仅适合作为程序员学习第一门语言,也是黑客喜欢的语言,python被称为各种语言的”胶水语言“。在这个过程中,无意间看到了一篇python前辈的博客——用python写QQ美女找茬游戏外挂( 点击跳转查看)。对于外挂,从没涉足,也完全不了解,但那篇博客给了我思路,引起了我的兴趣,编程这么久了,从没考虑过做外挂,不知道用java能不能实现。我试着从互联网找答案,基本都说java不适合做外挂,因为他的运行机制限制——运行在沙箱内,使其不能自由访问底层API。但是我之前了解java的一个Robot类,能实现屏幕截图,模拟鼠标键盘操作。对于实现那个外挂(或者叫辅助更合适)应该问题不大,因此,用java开发美女找茬辅助的想法就这样应运而生。
体验
  效果图:
可执行jar下载地址:
http://pan.baidu.com/s/1i3vGStB
源代码下载:
http://pan.baidu.com/s/1pJx63Mj
本程序及源代码仅用于学习研究,请不要用于商业和非法目的,由此产生的法律纠纷,自行负责,作者本人一概不负任何责任!
解析
实现思路:
1.截取屏幕;
2.根据游戏窗口独特的图标,查找游戏窗口左上角坐标;
3.根据窗口的坐标计算两张对比图片的位置,然后剪切出两张图片。
4.对比两张图片,找出不同的地方。
5.创建透明背景窗口,将找到的两张图片不同的地方用点绘制在该透明背景窗口上。
开发过程中主要涉及到一下几个点,已经分篇说明:

  1. 屏幕截图及图片剪切。(点击这里查看)

  2. 图片上查找图片算法。(点击这里查看)

  3. 比较两张同尺寸图片,找出不同的地方。

      类似上面图片上查找图片的算法,其实就是读取两张图片为BufferedImage对象,取出每个像素点的GRB值进行比较,用一个同样大小的二维数组记录比较结果,相同的像素点位置记录为0,不相同的像素点位置记录为1。等到图片比较完成后,就得到一个标记两张图片异同点的二位数组。

  4. 透明背景窗口的妙用。

      当设置窗口背景完全透明后,偶然发现透明的的地方类似窗口的破洞。这个特性可以很好的利用起来,比如,可以实现任意形状的窗口。

    在这里,利用这一特性,我在用点绘制两张图片不同的地方时,遍历比较结果的二位数组,只关注标记为1的点,并且忽略掉了上下左右都是1的点,这样绘制出来的效果就形成了中间镂空的区域,加上我让透明窗口始终保持最前,因此,虽然java的透明窗口始终覆盖在游戏界面上,但鼠标依然可以点击到游戏界面上的控件,非常神奇!

  5. 设置全局(操作系统级)热键。(点击这里查看)

  6. 鼠标拖拽。(点击这里查看)

  7. 内存释放。

      本以为不需要这一步,当我写完实际检验的时候,发现对比十几对图片后,再点击按钮,没反应了,到控制台输出一看,原来是内存溢出了。因为写的类的成员变量有几个比较大的二维数组,每次比较都是重新实例化类。因此,有必要主动请求java虚拟机尽快进行垃圾回收,即调用System.gc(),需要说明的是,就算你调用了System.gc(),也不能保证java虚拟机马上进行垃圾回收。另外,为了让java虚拟机有效地找到不用的对象,因此,需要将不用的成员变量赋予null值。为了简便,虽然我依然是每次比较都是重新实例化类,但在比较之前,我先请求进行垃圾处理,释放内存。

总结
写完之后我才发现,老早已经有java前辈写过这个辅助了。写这个小程序差不多花掉了我两天时间,最后总算写出来了,也有不少收获与体会。然后,写博客就是对着前两天编码的总结,同时,跟小伙伴们分享,共同进步。

转载于:https://www.cnblogs.com/jebysun/p/3969170.html

http://www.xdnf.cn/news/839629.html

相关文章:

  • 十万字数据库笔记
  • 清华大学计算机系网络教学视频31门计算机课程
  • Mediacoder基本教程
  • 查询IP地址
  • 分析:打折网站觊觎传统行业蛋糕
  • WinSCP和PuTTY在刷openwrt固件的使用教程
  • 终端不能联网_品牌维护森算云告诉你:大智慧舆情终端有什么作用
  • VSFTP介绍安装使用
  • Python爬虫实战五之模拟登录淘宝并获取所有订单
  • 【嵌入式开发】树莓派支持硬编码的视频套件
  • 2020年生肖码表图_2020年最好的计时码表,是这4款
  • 爬虫学习(一)---爬取电影天堂下载链接
  • 深度学习openpose人体姿态检测识别-动作检测
  • 从Idea到付诸实践,你必须要知道的
  • 国内主流视频分享网站主页对比
  • 饭统网倒闭:不创新、不放权就是作死
  • 物联网RTOS新贵-TencentOS tiny入门
  • 当我们谈「以消费者为中心」时,实际上在谈什么?| 消费者数字化运营从0到1
  • pubg绝地求生大厅发生了错误/显示与主机失去连接一键解决
  • 从零开始训练一个大模型教程
  • camera isp(Image Signal Processor)
  • ESET NOD32 最新更新有效的升级ID用户名和密码
  • [Python]输入星座名查询对应Unicode编码图案
  • spring boot应用内部实现应用自身重启的两种方式
  • 常见海报的尺寸
  • Unity--向量点乘叉乘在Unity中的使用
  • 天玑1100和天玑920处理器哪个好
  • PostScript(PS 格式)讲解
  • 数电设计--交通灯控制系统
  • 网络监控软件PRTG的配置及使用