Java模拟按键精灵(一)
背景
最近在玩热血传奇1.76金币版的游戏。这款游戏升级慢,爆率低,打钱慢。适合我这种养老玩家。游戏有个内挂,可以自动挂机。这个挂机功能非常水,只能自己跑到挂机地图,在地图上选好几个点,让人物边跑边打怪。不能自动回城买药,也不能自动卖装备。
后来在游戏里瞎逛时候,发现一个野外地图。地图大,怪物等级低,刷新适中。里面的怪会爆500金币一瓶的药水,爆率还不低。更重要的是地图中就有NPC,可以把药水卖掉,不用回城。因此,萌生了使用按键精灵,自动挂机,自动卖物品的想法。再转念一想,咱是程序员啊,干嘛不自己动手写一个按键精灵。功能满足需要就可以了,不用做的很复杂。说干就干。。。
需求分析
需求非常简单: 自动挂机检药水;药水检满后,走到NPC卖出药水;卖完药水后继续自动挂机。因为怪物等级低,装备不用考虑。
准备点基础工具类
既然要模拟按键精灵,那么java必须支持键盘和鼠标的操作,基本操作如下
- 单击鼠标左键
- 双击鼠标左键
- 移到鼠标到指定屏幕坐标
- 移到鼠标到指定屏幕坐标,并在当前位置单击
- 按下一个键
- 按下组合键
- 获取鼠标当前位置对应的屏幕颜色
- 获取鼠标当前位置的屏幕坐标
- 延迟一段时间
- 随机延迟一段时间(主要针对游戏后台的检测,机械的重复容易被认为使用外挂)
直接上代码,其他操作可根据需要添加。
键盘上按键对应的键值,参考com.sun.glass.events.KeyEvent类
package com.analog.tools;import java.awt.AWTException;
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.InputEvent;public class CommonUtil {private static final int DEFAULT_DELAY = 50;private static Robot robot ;static {try {robot = new Robot();} catch (AWTException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 获取鼠标当前位置坐标* @return*/public static Point getCurrentMousePoint(){Point point= MouseInfo.getPointerInfo().getLocation();return point;}/*** 获取坐标点对应的屏幕颜色* @return*/public static Color getPointColor(Point point){Color color = robot.getPixelColor(point.x, point.y);return color;}/*** 获取坐标点对应的屏幕颜色* @return*/public static Color getPointColor(int x, int y){Color color = robot.getPixelColor(x, y);return color;}/*** 移动鼠标到指定坐标* @return*/public static void moveToXY(int x, int y){robot.mouseMove(x, y);}/*** 单击鼠标* @return*/public static void clickMouse(){robot.mousePress(InputEvent.BUTTON1_MASK);delay(DEFAULT_DELAY);robot.mouseRelease(InputEvent.BUTTON1_MASK);}/*** 双击鼠标* @return*/public static void dobuleCiickMouse(){clickMouse();delay(DEFAULT_DELAY);clickMouse();}/*** 按下键盘上一个按键* @return*/public static void pressOneKey(int key){robot.keyPress(key);delay(DEFAULT_DELAY);robot.keyRelease(key);}/*** 移到指定点,单击一下* @return*/public static void moveToXYAndClick(int x, int y){moveToXY(x, y);delay(50);clickMouse();}/*** 按下键盘上组合按键* @return*/public static void pressKeys(int[] keys){for (int i = 0; i < keys.length; i++) {robot.keyPress(keys[i]);}delay(DEFAULT_DELAY);for (int i = keys.length - 1; i >= 0; i--) {robot.keyRelease(keys[i]);}}/*** 延迟 单位:毫秒* @param delay*/public static void delay(int delay) {robot.delay(delay);}/*** 随机延迟 单位:毫秒* @param delay*/public static void delayByRandom(int baseDelay, int range) {int random = (int) (Math.random() * range) + 1;int delay = baseDelay + (random - range / 2); //上下浮空robot.delay(delay);}
}
可以到Java可以完美模拟键盘和鼠标。鼠标右键功能我没写,因为我的游戏用不到。后面我会把需求细化,然后根据需求开发相应的代码。最后说一下,这个功能我是自己用的,怎么方便怎么来,肯定是很粗糙的,请各位多多包涵!!!
Java模拟按键精灵(一)相关推荐
- Java模拟按键精灵 - 完整程序工程
声明一下<Java模拟按键精灵>系列,是以学习java程序模拟键盘和鼠标输入为目的的.以游戏为背景,也是为了有动力去学习,其实没有什么高级的东西.许多小伙伴对细节比较感兴趣,我把整个工 ...
- Java模拟按键精灵(四)-屏幕搜索
功能介绍 本篇是介绍屏幕搜索功能,屏幕搜索主要是指在屏幕指定区域内,搜索特定的图形或特定的颜色.开始的时候走了弯路,我是直接遍历屏幕像素点,然后取色比较的,这样做效率特别低,10X10的像素区域, ...
- java开发按键精灵_Java 按键精灵
软件介绍 快速开发工具类,用最简洁的命令实现想要的功能.辅助模拟开发. 纯Java,跨平台,模拟按键.鼠标点击.找图.找色,实现简单按键精灵的功能 DEMO演示 辅助开发配套工具:ScreenCapt ...
- Java实现按键精灵(鼠标篇)
实现效果 背景 对于日常刷课每十分钟点击"继续学习"的行为,或者说是单机游戏里某项重复的行为想使其实现"自动化".我们可以通过JavaFx里的Robot类来实现 ...
- RF自动化--python模拟按键精灵
#Python下在windows系统下仿照按键精灵 功能:找到对应软件程序,并对界面进行操作,主要进行点击.信息输入.输出信息得检测 ##所用到得库 库名 作用 win32gui gui调用 win3 ...
- java 鼠标精灵_纯Java实现跨平台鼠标键盘模拟、找图找色,Java版按键精灵
由原本的Java使用JNI调用dll实现模拟辅助操作,升级到纯Java来实现,最新: https://github.com/xnx3/xnx3 1.[代码][Java]代码 /** * 鼠标.键盘.延 ...
- java版安卓按键精灵_纯Java实现跨平台鼠标键盘模拟、找图找色,Java版按键精灵...
由原本的Java使用JNI调用dll实现模拟辅助操作,升级到纯Java来实现,最新:https://github.com/xnx3/xnx3 仙人辅助_寻仙自动打怪 /** * 鼠标.键盘.延迟等基本 ...
- 安卓java模拟器按键精灵,如何反识别模拟器
) ioctl(sockfd, SIOCGIFHWADDR, (char*)&ifr) 区别:真机可以获取wlan0的ip和mac地址,模拟器只能获取eth0的ip和mac地址; 3,有用的p ...
- 通过win32api与win32con模拟按键精灵爬取中国商标网数据
# -*- coding: utf-8 -*- # Author: Yakuho # Date : 2019/8/8 import asyncio import os import time impo ...
最新文章
- win内置ubuntu安装_win10安装内置ubuntu教程
- Unity UGUI 小知识
- 中缀表达式生成二叉树
- [转]一张图理解prototype、proto和constructor的三角关系
- ACL 2021 | 结构化知识蒸馏方法
- 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
- 使用Visual Studio Code编写和激活ABAP代码 (上)
- 360 再次开源管理平台 Wayne:基于企业级 Kubernetes 集群
- python3安装pymysql_python安装PyMySQL
- extern C用法详解
- swift python javascript_最小的Swift App
- web of knowledge分析文献引用情况(引)
- php 自定义模板标签,自定义模板解析list标签
- 弱网条件下基于阻抗小扰动稳定性分析,小信号模型,阻抗扫描(电容电流反馈有源阻尼),单逆变器SRF-PLL
- stm32F4安装包MDK5
- 迁移学习知识 - 迁移学习的四种应用场景
- 程序员压力大?常灸这七大穴位减轻你的压力!
- 小程序 异步方法 promise
- ESS升级用户名及密码
- 无领导小组讨论面试真题解析(十)——你会怎么办?