背景

  最近在玩热血传奇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模拟按键精灵(一)相关推荐

  1. Java模拟按键精灵 - 完整程序工程

      声明一下<Java模拟按键精灵>系列,是以学习java程序模拟键盘和鼠标输入为目的的.以游戏为背景,也是为了有动力去学习,其实没有什么高级的东西.许多小伙伴对细节比较感兴趣,我把整个工 ...

  2. Java模拟按键精灵(四)-屏幕搜索

    功能介绍   本篇是介绍屏幕搜索功能,屏幕搜索主要是指在屏幕指定区域内,搜索特定的图形或特定的颜色.开始的时候走了弯路,我是直接遍历屏幕像素点,然后取色比较的,这样做效率特别低,10X10的像素区域, ...

  3. java开发按键精灵_Java 按键精灵

    软件介绍 快速开发工具类,用最简洁的命令实现想要的功能.辅助模拟开发. 纯Java,跨平台,模拟按键.鼠标点击.找图.找色,实现简单按键精灵的功能 DEMO演示 辅助开发配套工具:ScreenCapt ...

  4. Java实现按键精灵(鼠标篇)

    实现效果 背景 对于日常刷课每十分钟点击"继续学习"的行为,或者说是单机游戏里某项重复的行为想使其实现"自动化".我们可以通过JavaFx里的Robot类来实现 ...

  5. RF自动化--python模拟按键精灵

    #Python下在windows系统下仿照按键精灵 功能:找到对应软件程序,并对界面进行操作,主要进行点击.信息输入.输出信息得检测 ##所用到得库 库名 作用 win32gui gui调用 win3 ...

  6. java 鼠标精灵_纯Java实现跨平台鼠标键盘模拟、找图找色,Java版按键精灵

    由原本的Java使用JNI调用dll实现模拟辅助操作,升级到纯Java来实现,最新: https://github.com/xnx3/xnx3 1.[代码][Java]代码 /** * 鼠标.键盘.延 ...

  7. java版安卓按键精灵_纯Java实现跨平台鼠标键盘模拟、找图找色,Java版按键精灵...

    由原本的Java使用JNI调用dll实现模拟辅助操作,升级到纯Java来实现,最新:https://github.com/xnx3/xnx3 仙人辅助_寻仙自动打怪 /** * 鼠标.键盘.延迟等基本 ...

  8. 安卓java模拟器按键精灵,如何反识别模拟器

    ) ioctl(sockfd, SIOCGIFHWADDR, (char*)&ifr) 区别:真机可以获取wlan0的ip和mac地址,模拟器只能获取eth0的ip和mac地址; 3,有用的p ...

  9. 通过win32api与win32con模拟按键精灵爬取中国商标网数据

    # -*- coding: utf-8 -*- # Author: Yakuho # Date : 2019/8/8 import asyncio import os import time impo ...

最新文章

  1. win内置ubuntu安装_win10安装内置ubuntu教程
  2. Unity UGUI 小知识
  3. 中缀表达式生成二叉树
  4. [转]一张图理解prototype、proto和constructor的三角关系
  5. ACL 2021 | 结构化知识蒸馏方法
  6. 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
  7. 使用Visual Studio Code编写和激活ABAP代码 (上)
  8. 360 再次开源管理平台 Wayne:基于企业级 Kubernetes 集群
  9. python3安装pymysql_python安装PyMySQL
  10. extern C用法详解
  11. swift python javascript_最小的Swift App
  12. web of knowledge分析文献引用情况(引)
  13. php 自定义模板标签,自定义模板解析list标签
  14. 弱网条件下基于阻抗小扰动稳定性分析,小信号模型,阻抗扫描(电容电流反馈有源阻尼),单逆变器SRF-PLL
  15. stm32F4安装包MDK5
  16. 迁移学习知识 - 迁移学习的四种应用场景
  17. 程序员压力大?常灸这七大穴位减轻你的压力!
  18. 小程序 异步方法 promise
  19. ESS升级用户名及密码
  20. 无领导小组讨论面试真题解析(十)——你会怎么办?

热门文章

  1. 徐州市RFID集装箱资产管理,RFID资产管理系统-苏州新导
  2. 3DMAX快速入门 界面介绍【下】
  3. 关于写书的那些读者问题.....
  4. 蓝湖导出android代码,【蓝湖指北】用好蓝湖,提升开发效率
  5. rtx2080ti和gtx1080ti 对比哪个好
  6. 芒果TV登陆爬虫练习
  7. 工业防火墙架构与技术【第二节:硬件架构③】
  8. 423读书节来当当薅羊毛!170买400/240买600
  9. 市值超英特尔,英伟达如何“兴风作浪”?
  10. 网络:连接CCProxy代理服务器