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前辈写过这个辅助了。写这个小程序差不多花掉了我两天时间,最后总算写出来了,也有不少收获与体会。然后,写博客就是对着前两天编码的总结,同时,跟小伙伴们分享,共同进步。

时间: 2024-10-25 14:45:22

2014中秋节,用java为QQ游戏美女找茬写辅助的相关文章

大家来找茬 两幅图像相减 其它好的实现? 美女找茬

http://blog.csdn.net/merlin_q/article/details/7024798 大家来找茬 两幅图像相减 其它好的实现? 标签: imageinclude 2011-11-29 20:29 4701人阅读 评论(2) 收藏 举报  分类: Opencv学习(16)  C++(18)  版权声明:本文为博主原创文章,未经博主允许不得转载. #include <opencv2/core/core.hpp>#include <opencv2/highgui/high

转发 :QQ游戏百万人同时在线服务器架构实现

QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国. 服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单

【转】Java数字抽奖游戏核心代码

1. [代码][Java]代码    package com.luiszhang.test; import java.util.Arrays; /** * NumberLotteryGame * 一个简单的数字彩票游戏类 * @author LuisZhang * 参考了core java 8th中的例3-7的设计思想 */public class NumberLotteryGame {    private int gamesNumber;    // 生成游戏的数量,为以后多线程扩展做考虑 

QQ游戏连连看

QQ游戏连连看 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:50            测试通过:19 描述 众所周知,lfq198502非常喜欢玩连连看游戏.连连看游戏 ,只要将相同花色的两张牌用三根以内的直线连在一起就可以消除, 规则简单容易上手 . 操作:第一次使用鼠标点击棋盘中的棋子,该棋子此时为"被选中",以特殊方式显示:再次以鼠标点击其他棋子,若该棋子与被选中的棋子图案相同,且把第一个棋子到第二个棋子

用C#调用Matlab图像处理自制QQ游戏2D桌球瞄准器

平时不怎么玩游戏,有时消遣就玩玩QQ里的2D桌球,但是玩的次数少,不能像骨灰级玩家一样百发百中,肿么办呢?于是某天突发奇想,决定自己也来做个“外挂”.说是外挂,其实只是一个瞄准器,毕竟外挂是修改别人的软件,有点违法的意思,况且自己还没有能力去那么做,所以自己还是弄个瞄准器,做做弊,过下小瘾,同时也提高一下自己的编程能力. 起初(也就是半年前),自己尝试做一个瞄准器的初始版本,用C#做,想法很简单: Step1.把鼠标移到洞口,获取鼠标位置: Step2.将鼠标放到要击打的球的圆心上,获取鼠标当前

从零开始学java(小游戏 石头剪刀布)

Game.java package com.java;import java.util.Scanner;public class Game {        private Player player;        public Game(Player player){        this.player=player;    }            public void start(){        System.out.println("开始游戏");        Sy

代写java程序qq:928900200

学校为全面提升学校教学质量,提高管理水平,决定开发一套小型成绩管理系统,实现以下功能.1)   系统用户分为管理员.教师和学生三种角色,每种角色都可以包含若干个用户.其中管理员登录后可以进行教师.学生和课程管理.2)   系统能够管理教师,进行增加,删除,编辑,查询.教师包含教师号.姓名.学院.职称.年龄等信息.3)   系统能够管理学生,进行增加,删除,编辑,查询.学生包含学号.姓名.学院.专业.班级等信息.4)   系统能够管理课程,进行增加,删除,编辑,查询.课程包含课程号.名称.任课教师

OOP面向对象编程之java打飞机游戏

#写在前面 继上一篇OOP面向对象编程之俄罗斯方块项目实现过程,OOP面向对象编程之java打飞机游戏,其实写的很简单,也很容易理解,并且注释写的很清楚了,还有问题,自己私下去补课学习(顺便做50个深蹲,嘿嘿,平时干嘛去了),看图:   #完整代码   敌飞机 package com.tarena.fly; import java.util.Random; /** * 敌飞机: 是飞行物,也是敌人 */ public class Airplane extends FlyingObject imp

相当牛X的java版星际游戏

分享一款牛人用java写的经典游戏,目录结构如下: 虽然只能算一个Demo,但是用到了很多Java基础技术和算法: Java2D,双缓冲,A星寻路,粒子系统,动画效果,处理图片,Swing ui ,UDP,TCP/Socket. 另外这个程序也可以看出jre1.5和jre1.6之前的性能差别.(jre1.5下面运行很卡) (源代码在awt.rar中). 暂时支持采矿,攻击,寻路,局域网对战. 两张效果图: 下载页面:java版星际游戏 注:不要忘了导入jstarcaft.jar这个jar包 (I