相信很多程序猿都玩游戏,比如LOL :有时候想打人机对战(玩家对战小心别人举报你!),纯属为了拿经验和金币,而本身不想玩,但如果玩家不操作,那么很快就会被系统认为是挂机,从而得不到经验和金币。所以,本文用java实现简单的程序,帮你实现伪挂机,可以自动吃经验、放技能、升级技能。。。你只需要开启程序,然后进入游戏画面即可。。。。
其实很简单,主要利用java的robot类来模拟玩家的鼠标点击(移动)和按键输入(升级或者智能施法),稍微学过java的人都可以很快搞定。。。这里不是那种高级外挂,那个是需要或许系统的句柄,然后对玩家操作和游戏系统的信息协议进行拦截、修改等动作,小心腾讯找你。。。
贴上代码:
package com.lol.game; import java.awt.AWTException; import java.awt.Dimension; import java.awt.Robot; import java.awt.Toolkit; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; /** * * LOL伪挂机 * LOL进入游戏后的代打小程序,模拟鼠标点击 、技能升级和施放 * 需要设置全部为智能施法,小地图在右下角 * * @author Administrator */ public class LOL_Mouse { static int size=40;///lol右下角的小地图标志性size,不同屏幕大小不同 public static void main(String[] args) throws AWTException { Robot robot = new Robot(); //获取屏幕大小 Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize(); double height=screenSize.height/2; double width=screenSize.width/2; double theta=Math.atan(height/width); ///得到屏幕中心偏右上方的坐标,便于智能施放技能 int jinengy=(int) (height-50*Math.sin(theta)); int jinengx=(int) (width+50*Math.cos(theta)); ///点击右下角的地图上的坐标,不同屏幕大小需要修改140为其它适应的值 int x=(int)width*2-140-size; int y=(int) height*2-140+size; int i=1; ///无限循环来执行操作 while(true){ robot.mouseMove(x,y); robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); robot.delay(5000); /////以下是砸技能!!!是砸不是放 robot.keyPress(KeyEvent.VK_Q); robot.keyRelease(KeyEvent.VK_Q); robot.delay(500); robot.keyPress(KeyEvent.VK_W); robot.keyRelease(KeyEvent.VK_W); robot.delay(500); robot.keyPress(KeyEvent.VK_E); robot.keyRelease(KeyEvent.VK_E); robot.delay(500); robot.keyPress(KeyEvent.VK_R); robot.keyRelease(KeyEvent.VK_R); robot.delay(500); ///每次选择一个技能升级,减少电脑响应按键输出的负担 if(1==i){ ////升级技能!!! ////ctrl+q robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_Q); robot.keyRelease(KeyEvent.VK_Q); robot.keyRelease(KeyEvent.VK_CONTROL); i++; }else if(2==i){ ////ctrl+w robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_W); robot.keyRelease(KeyEvent.VK_W); robot.keyRelease(KeyEvent.VK_CONTROL); i++; }else if(3==i){ ////ctrl+e robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_E); robot.keyRelease(KeyEvent.VK_E); robot.keyRelease(KeyEvent.VK_CONTROL); i++; }else if(4==i){ ////ctrl+r robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_R); robot.keyRelease(KeyEvent.VK_R); robot.keyRelease(KeyEvent.VK_CONTROL); i=1; } } } }
原文地址:http://blog.csdn.net/abcd_d_/article/details/40543735