目录

说明:

Robot类的介绍

Robot类API

主要思路

代码实现

工具方法

脚本源代码

实现结果


说明:

本篇文章主要运用java中的Robot类,实现Microsoft Store微软商店中《别踩白块-钢琴大师》游戏的全自动脚本功能,原理非常简单,十分适合初学者学习。

Robot类的介绍

Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试

Robot类API

方法名 使用说明 使用实例
delay(n) 延迟电脑操作n毫秒,类似于Thread.sleep() robot.delay(1000);
keyPress() 模拟手动按下电脑键盘上的某个键 robot.keyPress(KeyEvent.VK_SPACE); //按下空格键
keyRelease() 模拟手动松开电脑键盘上的某个键(与keyPress()对应,按下一个键必须松开这个键) robot.keyRelease(KeyEvent.VK_SPACE); //松开空格键
mouseMove(x,y) 将鼠标移动到指定的x,y位置 robot.mouseMove(300, 400); //将鼠标移动到距离左边框300px,距离上边框400px的位置
mousePress() 按下鼠标上的某个键 robot.mousePress(InputEvent.BUTTON1_MASK); //按下左键 robot.mousePress(InputEvent.BUTTON2_MASK); //按下滚轴键robot.mousePress(InputEvent.BUTTON3_MASK); //按下右键
mouseRelease() 松开鼠标上的某个键 robot.mouseRelease(InputEvent.BUTTON1_MASK); //松开左键 robot.mouseRelease(InputEvent.BUTTON2_MASK); //松开滚轴键robot.mouseRelease(InputEvent.BUTTON3_MASK); //松开右键
getPixelColor(x,y) 获取x,y点像素坐标 robot.getPixelColor(10,20)

主要思路

制作该游戏全自动脚本的主要思路是:

(1)使用robot.getPixelColor(x,y)获取判断最下列4个方格块中某一个像素点的颜色

(2)如果像素点颜色等于黑方框的颜色,使用robot.mouseMove(x,y)移动到x,y坐标点

并使用robot.mousePress(InputEvent.BUTTON1_MASK)点击鼠标左键,在点击之后使用robot.mouseRelease(InputEvent.BUTTON1_MASK)松开鼠标左键

代码实现

工具方法

测像素点X,Y坐标和RGB颜色的工具方法 返回{x,y,red,green,blue}

    public static int[] testPoint() throws Exception {Robot robot = new Robot();//可以设置返回结果的时间 比如2000ms 则2秒后返回结果robot.delay(2000);// 获取鼠标的坐标PointerInfo pinfo = MouseInfo.getPointerInfo();Point p = pinfo.getLocation();int x = (int) p.getX();int y = (int) p.getY();// 获取鼠标坐标颜色Color color = robot.getPixelColor(x, y);int red = color.getRed();int green = color.getGreen();int blue = color.getBlue();// 返回鼠标的坐标和颜色数组int[] arr = new int[] { x, y, red, green, blue };return arr;}

最后测得第一个方框中心点X,Y坐标大概是(732,670)每个方框的间距是150 RGB颜色是(59,56,53)   (不同电脑的分辨率可能有误差 以实际测量为准 所得数据皆为本人所测)

脚本源代码

public class WhiteMouse {public static void main(String[] args) throws AWTException, InterruptedException {//程序运行前延时1sThread.sleep(1000);runRoot();}public static void runRoot() throws AWTException, InterruptedException {Robot robot = new Robot();while (true){for (int i = 0; i < 4; i++) {Color pixelColor = robot.getPixelColor(732 + i * 150, 670);int red = pixelColor.getRed();int green = pixelColor.getGreen();int blue = pixelColor.getBlue();//有的游戏因渲染可能存在误差 所以求得像素点颜色与比对颜色差的绝对值<5 判断成功 否则失败if (Math.abs(red-59)<5 && Math.abs(green-56)<5 && Math.abs(blue-63)<5){//此处加循环是因为 鼠标移动有可能bug移动不到指定位置 循环几次保证鼠标移动到指定位置//但是不能循环过多 占用CPUfor (int j = 0; j < 3; j++) {robot.mouseMove(732 + i * 150, 670);}robot.mousePress(InputEvent.BUTTON1_MASK);robot.delay(1);//防止按键过快 让robot休息一下 如果经常失误则延长时间robot.mouseRelease(InputEvent.BUTTON1_MASK);}}}}
}

实现结果

Java别踩白块外挂(附源码)相关推荐

  1. 再来一个小游戏——原生js逐句解释开发简易版别踩白块,附源码

    芜湖!没想到上个做扫雷的阅读量这么高(激动) 先捞一下:做个小项目~纯原生JS手把手逐句解释写一个扫雷小游戏(附源码) 快看↑ 这次就做一个别踩白块吧哈哈哈哈哈 最终版演示地址:钢琴块 源码在最后!最 ...

  2. java计算机毕业设计婚恋网站(附源码、数据库)

    java计算机毕业设计婚恋网站(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...

  3. Java Swing图书管理系统桌面软件附源码

    Java Swing图书管理系统桌面软件附源码,亲测可运行. 功能界面如下: 登录界面,默认账号admin密码admin 主功能界面: 添加图书功能界面: 部分源码: 完整源码下载地址: JavaSw ...

  4. 使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了

    使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了 此程序在手再也不怕女朋友跟你闹了!!!!自从有了女朋友比如:早安.晚安之类的问候语可不能断,但是也难免有时候会忘记那么该咋么办呢 ...

  5. java计算机毕业设计后勤管理系统(附源码、数据库)

    java计算机毕业设计后勤管理系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(In ...

  6. java计算机毕业设计网上拍卖系统(附源码、数据库)

    java计算机毕业设计网上拍卖系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(In ...

  7. java计算机毕业设计健身俱乐部管理系统(附源码、数据库)

    java计算机毕业设计健身俱乐部管理系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...

  8. JAVA计算机毕业设计美容院管理系统(附源码、数据库)

    JAVA计算机毕业设计美容院管理系统(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(I ...

  9. java计算机毕业设计汽车美容管理(附源码、数据库)

    java计算机毕业设计汽车美容管理(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(In ...

最新文章

  1. 生日小助手官方网站已经发布了!
  2. c语言是以文件为单位编译,c语言从头开始(三:编译器工作原理) (我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)...
  3. C++ opengl 绘制三角形扇
  4. Linux 关闭网络管理服务
  5. 等差数列java_Java实现 LeetCode 413 等差数列划分
  6. swift语言 编写 ios开发 第一个程序hello world!
  7. 64位Windows 7平台安装32位Timesten,配置ODBC数据源
  8. http://maven.apache.org/POM/4.0.0 报红
  9. 医咖会免费SPSS教程学习笔记—斯皮尔曼相关系数(秩相关系数)
  10. 下载linux下ahci驱动怎么安装,怎么在u盘pe下给电脑系统安装ahci驱动
  11. WinDbg分析蓝屏dump原因
  12. Jupyter notebook的主题和字体美化
  13. 银河麒麟 Kylin_s10_sp3安装Oracle11g(FS)(亲测有效)
  14. Android 监听来去电状态的实现
  15. 关于域名评级标准【PoSEO等级】
  16. 复韵母有哪些?18个复韵母都有什么
  17. 全国农村调查数据(1986-2015年)
  18. mysql 类图_类图 - 吴小凯 - 博客园
  19. Unity-机器码加密
  20. 国有企业不能有信息化

热门文章

  1. 照片拼图什么软件好?试试Design Your Collage mac
  2. “ 输出1900年之后任意一年的日历 ”完整编程思路!
  3. linux 16中文输入法,ubuntu 16.04 下安装并切换搜狗中文输入法
  4. 蓝牙电话协议HFP(Hands-Free Profile) 传输手机状态信息(信号/漫游/电量/运行商/电话状态)
  5. Word:在文中添加参考文献的引用并自动更新
  6. 【谈天说地】巴洛克建筑
  7. bzoj2733 [HNOI2012]永无乡
  8. Mac App Store沙盒政策气走开发者 苹果“死不悔改”
  9. rhel7配置smba
  10. 关于vue+capacitor打包android后无法访问http问题的总结