“QQ找茬”游戏的识别小软件JAVA源码
“QQ找茬”游戏识别很简单,只包含查找定位、定位比较和显示三部分,作者设计两个类:
1、GUI类:frmZC类,包含“定位”和“查询”两个按钮;
2、线程处理类:funChk类,实现线程序错位处理。
注:以下源码要调试务先做好程序JFrame界面,并将按钮放入JPanel并置于界面底部。
其中frmZC类源码如下:
//--------------------------------------------------------------------------------------------------------
//------------------------------frmZC开始------------------------------------------------------------
import java.awt.*;
import java.awt.image.*;
import java.util.*;
public class frmZC extends javax.swing.JFrame {
private BufferedImage tImg,tImg1;
private int locX,locY;
private int locH=286,locW=381;
private int tW=16;
private int xxF=0,xFlag=1;
//xxF 0 时 paint 不显示任何
// 1 时 paint 显示当前图片
// 其他 时 paint 显示相同图片内容,不同部分CYAN色显示
//xFlag 3 时 图片已经定位
/** Creates new form frmZC */
public frmZC() {
initComponents();
}
@Override
public void paint(Graphics g){
jpMain.setVisible(false);
DrawZC(g);
jpMain.setVisible(true);
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jpMain = new javax.swing.JPanel();
jbDW = new javax.swing.JButton();
jbZC = new javax.swing.JButton();
jbCZC = new javax.swing.JButton();
jtCS = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setAlwaysOnTop(true);
setResizable(false);
jbDW.setText("定位");
jbDW.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jbDWMouseClicked(evt);
}
});
jbZC.setText("查找");
jbZC.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jbZCMouseClicked(evt);
}
});
jbZC.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbZCActionPerformed(evt);
}
});
jbCZC.setText("重查");
jbCZC.setEnabled(false);
jbCZC.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jbCZCMouseClicked(evt);
}
});
jbCZC.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbCZCActionPerformed(evt);
}
});
jtCS.setEnabled(false);
javax.swing.GroupLayout jpMainLayout = new javax.swing.GroupLayout(jpMain);
jpMain.setLayout(jpMainLayout);
jpMainLayout.setHorizontalGroup(
jpMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpMainLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jbZC, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 43, Short.MAX_VALUE)
.addComponent(jtCS, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbCZC)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbDW)
.addContainerGap())
);
jpMainLayout.setVerticalGroup(
jpMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpMainLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jpMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jbCZC)
.addComponent(jtCS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jbDW)
.addComponent(jbZC)))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jpMain, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(316, Short.MAX_VALUE)
.addComponent(jpMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jbDWMouseClicked(java.awt.event.MouseEvent evt) {
int x=10,y=150,i,j,k,l;
int t=2;
int tC[][]=new int[3][4];
try {
tImg = (new Robot()).createScreenCapture(new Rectangle(x,y,2*locW+300,locH+300));
} catch (AWTException ex) {
ex.printStackTrace();
}
for(i=0;i<locW/2;i++){
for(j=0;j<locH/2;j++){
tC[0][0]=tImg.getRGB(i, j);
tC[0][1]=tImg.getRGB(i+140, j);
tC[0][2]=tImg.getRGB(i+506, j);
tC[0][3]=tImg.getRGB(i+780, j);
tC[1][0]=tImg.getRGB(i, j+150);
tC[1][1]=tImg.getRGB(i+386, j+150);
tC[1][2]=tImg.getRGB(i+780, j+150);
tC[1][3]=tC[1][2];
tC[2][0]=tImg.getRGB(i, j+293);
tC[2][1]=tImg.getRGB(i+140, j+293);
tC[2][2]=tImg.getRGB(i+506, j+293);
tC[2][3]=tImg.getRGB(i+780, j+293);
t=2;
for(k=0;k<3;k++){
for(l=0;l<3;l++){
if(tC[k][l]!=tC[k][l+1]||tC[k][l]==tC[(k+1)%3][l]){
t=10;
k=5;
l=5;
}
}
}
if(t!=10){
t=0;
locX=i+x;
locY=j+y;
i=locW;
j=locH;
}
}
}
if(t==0){
xFlag=3;
jbZC.setEnabled(true);
}
xxF=1;
repaint();
}
private void jbZCMouseClicked(java.awt.event.MouseEvent evt) {
if(xFlag==3){
int iFlag=0;
funChk fc[]=new funChk[20];
try {
tImg = (new Robot()).createScreenCapture(new Rectangle(locX,locY,locW,locH));
} catch (AWTException ex) {
ex.printStackTrace();
}
for(tW=1;tW<=20;tW++){
try {
tImg1 = (new Robot()).createScreenCapture(new Rectangle(locX+locW+tW,locY,locW,locH));
} catch (AWTException ex) {
ex.printStackTrace();
}
fc[tW-1]=new funChk(tW,tImg,tImg1);
fc[tW-1].start();
}
tW=0;
while(true){
if(fc[tW].rst){
tW++;
xxF=2;
repaint();
jtCS.setText("0");
break;
}else{
tW++;
if(tW>=20){
iFlag++;
tW=0;
if(iFlag>500){
break;
}
}
}
}
}else{
jbZC.setEnabled(false);
}
}
private void jbCZCMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if(xFlag==3){
if(tW==20){
tW=2;
}else{
tW++;
}
xxF=2;
repaint();
Integer iNN=Integer.parseInt(jtCS.getText());
iNN++;
jtCS.setText(iNN.toString());
}else{
jbCZC.setEnabled(false);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frmZC().setVisible(true);
}
});
}
public void DrawZC(Graphics g){
int i,j,rgb,rgb1;
if(xxF==0){
}else if(xxF==1){
try {
tImg = (new Robot()).createScreenCapture(new Rectangle(locX,locY,locW,locH));
} catch (AWTException ex) {
ex.printStackTrace();
}
for(i=0;i<locW;i++){
for(j=0;j<locH;j++){
g.setColor(new Color(tImg.getRGB(i, j)));
g.fillRect(i+10, j+35, 1, 1);
}
}
}else{
try {
tImg1 = (new Robot()).createScreenCapture(new Rectangle(locX+locW+tW,locY,locW,locH));
} catch (AWTException ex) {
ex.printStackTrace();
}
for(i=0;i<locW;i++){
for(j=0;j<locH;j++){
rgb=tImg.getRGB(i, j);
rgb1=tImg1.getRGB(i, j);
if(rgb==rgb1){
g.setColor(new Color(rgb1));
}else{
g.setColor(Color.CYAN);
}
g.fillRect(i+10, j+35, 1, 1);
}
}
}
}
// Variables declaration - do not modify
private javax.swing.JButton jbCZC;
private javax.swing.JButton jbDW;
private javax.swing.JButton jbZC;
private javax.swing.JPanel jpMain;
private javax.swing.JTextField jtCS;
// End of variables declaration
}
//-------------------------------------frmZC结束--------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
funChk类源码如下:
//-----------------------------------------------------------------------------------------------------------------
//------------------------------funChk开始--------------------------------------------------------------------
import java.awt.image.BufferedImage;
/**
*
* @author Minli
*/
public class funChk extends Thread {
public boolean rst;
private int iFlag;
private BufferedImage tImg,tImg1;
public funChk(int i,BufferedImage Img,BufferedImage Img1 ){
iFlag=i;
rst=false;
tImg=Img;
tImg1=Img1;
}
@Override
public void run(){
int i,j,rgb,rgb1,s=0,locW=tImg.getWidth(),locH=tImg.getHeight();
int N=locW*locH/8;
rst=false;
for(i=0;i<locW;i+=2){
for(j=0;j<locH;j+=2){
rgb=tImg.getRGB(i, j);
rgb1=tImg1.getRGB(i, j);
if(rgb==rgb1){
s++;
if(s>N){
rst=true;
j=locH+1;
i=locW+1;
}
}
}
}
}
}
//---------------------funChk结束-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
“QQ找茬”游戏的识别小软件JAVA源码相关推荐
- “QQ找茬”游戏的识别小软件JAVA源码(netBeams项目)
1.此为一个netBeams项目; 2.它包frmZC和funChk两个类: 3.采用技术有截屏.线程和识别方案: 4.它是个完整可运行和可使用的小软件: 5.它可能会被腾讯公司认为是外挂. http ...
- 动手制作QQ找茬游戏外挂
周末闲来无事,玩了腾讯的qq游戏,名字叫大家来找茬,游戏就是在两幅相同的图片寻找不同五处不同的地方,你和对手谁发现的快就赢,无奈自己眼睛不够尖,总是比对手慢,好在俺是名程序员,只好想点别的办法,一直都 ...
- 由于找不到appvisvsubsystems32.dll_找茬游戏大全:我找东西贼快!小清新找茬游戏小程序,点开既玩...
50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <我找东西贼快>游戏小程序好玩吗? <我找东西贼快>小游戏怎么玩? 怎么进入<我找 ...
- C#写的QQ找茬外挂
这个暑假转眼就要过完了.本来打算在学校干两件事:学车和竞赛,结果竞赛没能杀进全国总决赛,想想也是意料中的事.学车就更郁闷了,从上学期开学报名到科目一考试,足足等了近五个月.终于摸到真车了,结果每天冒着 ...
- C#QQ找茬助手(一)开始作弊!
题记:昨晚跟舍友空虚了,然后一起玩了QQ的大家来找茬,然后-居然又吸引了3个"同道中人"一起,大家5双眼睛极度犀利.群众的眼睛是雪亮的,跟别人玩找得那叫一个速度,不过也有微小的地方 ...
- 跟我学 编写QQ找茬辅助1 -原创文章
今天把完美日志更新一下打算早点睡觉的. 被朋友拉着玩了一下QQ找茬..高手大有人在啊..很是悲惨.. 朋友痛恨的说.不行,要找外挂玩玩..百度一下,也还有不少..对于 ...
- QQ找茬辅助工具的制作
QQ找茬辅助工具的制作 转载请注明出处:http://www.cppblog.com/greatws/archive/2009/05/05/81996.html 这段时间GF一直在玩QQ找茬,看了一下 ...
- QQ找茬辅助工具的制作[转]
出处:http://www.cppblog.com/greatws/archive/2009/05/05/81996.html 这段时间GF一直在玩QQ找茬,看了一下,原理很简单,就是找到2附图片的不 ...
- C#编写QQ找茬外挂
QQ找茬外挂,用C#代码编写. 使用方法 这个工具的主要运行流程很简单: 游戏截图->比较图片->标记图片不同点. 实现代码 截图的处理类ScreenCapture: /// /// 提供 ...
最新文章
- 熬夜写代码,不如换女装入GitHub获上千Star?
- 政、企、学三方视角下的智慧城市发展 | 2020中关村论坛“人工智能与城市可持续发展论坛”成功举办...
- win10 Linux子系统 交叉编译器注意事项
- 基于直方图的图像增强算法(HE、CLAHE、Retinex)
- Java黑皮书课后题第7章:*7.21(整数求和)编写程序,从命令行输入不定数目的整数,然后显示它们的和
- php计算单双,PHP中单双号与变量
- React开发(158):ant design级联回显 直接传入数组
- Wireshark条件过滤后的数据包保存
- 专题:Windows编译x264、SDL、faac、ffmpeg过程
- win10: 无法连网 There is something wrong with the proxy server
- vue json对象转数组_Vue优秀表单组件,用Vue构建表单的最简单方法——Vue Formulate
- 拿什么产品引流年轻女性?发什么能吸引女粉丝?
- JZOJ3457. 【NOIP2013模拟联考3】沙耶的玩偶(doll) (2017.8B组)
- android平板和ipad区别,iPad和安卓平板差距大吗?亲身经历告诉你,平板该如何挑选...
- 学术论文等级划分(包括EI会议论文)
- OpenCV用FAST、SURF、SIFT、BRISK、ORB等进行特征点提取与匹配
- openstack 权限管理
- 3D视觉——4.手势识别(Gesture Recognition)入门——使用MediaPipe含单帧(Singel Frame)和实时视频(Real-Time Video)
- 常用工具网址(去重,排序,转换)
- 面筋 嘎嘣脆(C/C++)
热门文章
- rosbridge简单的安装记录
- Visual Studio任务栏图标显示异常、变白
- 喜报,实力认可! | 通付盾上榜《ISC 2022数字安全创新能力全景图谱》七大安全领域
- 2013年SCI收录仪器仪表期刊56种目录_拔剑-浆糊的传说_新浪博客
- (arxiv-2018) 重新审视基于视频的 Person ReID 的时间建模
- layui页面发送手机验证码(一)前端
- Impala shell命令
- Impala-shell命令
- 5.19 综合案例2.0-智能风扇(仅支持2.2以上版本)
- php定时任务超时解决方案