java 阴阳师个人脚本

java 阴阳师个人脚本packagemain importcom melloware jintellitype HotkeyListen importcom melloware jintellitype JIntellitype importorg junit Test importjavax imageio ImageIO importjava awt importjava awt event InputEvent importjava awt event KeyAdapter im

一、思路

二、图片类

package main; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; public class writeImage { 
    public static void main(String[] args) throws AWTException, IOException { 
    Robot robot=new Robot(); robot.delay(3000); saveImg(980,784,10,10,"御灵结束"); } /* int x ,X轴 int y ,Y轴 int width,宽 int height,高 String pngName ,图片的名字(不用+PNG,默认补上PNG) String pathname,图片路径,没用则默认保存在E:\阴阳师\img下 * */ static void saveImg(int x,int y,int width,int height,String pngName,String pathname) throws AWTException, IOException { 
    Robot robot=new Robot(); robot.delay(3000); BufferedImage bufferedImage =robot.createScreenCapture(new Rectangle(x,y,width,height)); robot.mouseMove(x,y); File file=new File(pathname+"\\"+pngName+".png"); OutputStream os=new FileOutputStream(file); ImageIO.write(bufferedImage,"png",os); } static void saveImg(int x,int y,int width,int height,String pngName) throws AWTException, IOException { 
    Robot robot=new Robot(); robot.delay(3000); BufferedImage bufferedImage =robot.createScreenCapture(new Rectangle(x,y,width,height)); robot.mouseMove(x,y); String pathname="D:\\idea\\OnmyojiPlus\\img"; File file=new File(pathname+"\\"+pngName+".png"); OutputStream os=new FileOutputStream(file); ImageIO.write(bufferedImage,"png",os); } } 

三、主类

package main; import com.melloware.jintellitype.HotkeyListener; import com.melloware.jintellitype.JIntellitype; import org.junit.Test; import javax.imageio.ImageIO; import java.awt.*; import java.awt.event.InputEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Random; import static com.sun.java.accessibility.util.AWTEventMonitor.addKeyListener; public class gotoStart { 
    public static final int FUNC_KEY_MARK = 1; public static final int EXIT_KEY_MARK = 0; public gotoStart() throws AWTException, InterruptedException { 
    //添加全局监听器 JIntellitype.getInstance().registerHotKey(FUNC_KEY_MARK,JIntellitype.MOD_ALT,(int)'Q'); JIntellitype.getInstance().registerHotKey(EXIT_KEY_MARK,JIntellitype.MOD_ALT,(int)'D'); JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() { 
    @Override public void onHotKey(int i) { 
    switch (i){ 
    case FUNC_KEY_MARK: System.out.println("test"); break; case EXIT_KEY_MARK: System.out.println("程序结束!!!!!"); System.exit(0); break; } } }); Robot robot=new Robot(); robot.delay(3000); ArrayList<BufferedImage> images =new ArrayList<>(); // images.add(getBfImageFromPath(new FileInputStream("src/img/御灵挑战"))); images.add(getBfImageFromPath("E:\\阴阳师\\img\\卑弥呼结束.png")); images.add(getBfImageFromPath("E:\\阴阳师\\img\\协同取消.png")); images.add(getBfImageFromPath("E:\\阴阳师\\img\\卑弥呼挑战.png")); images.add(getBfImageFromPath("E:\\阴阳师\\img\\御灵挑战.png")); images.add(getBfImageFromPath("E:\\阴阳师\\img\\御灵结束.png")); BufferedImage tempImg=null; int i=-1; while (true){ 
    //这个是根据情况返回对应的时间 i=-1; i = chooseThingReturnNum(images); System.out.println(i); switch (i){ 
    //卑弥呼打完 case 1:{ 
    next(); break; } //协同任务点击取消 case 2: mouseRandomMoveTrueArea(1275,783,21,22); mouseSwitchClick("left"); break; //点击卑弥呼挑战 case 3: mouseRandomMoveTrueArea(1645,878,180,158); mouseSwitchClick("left"); break; //挑战御灵 case 4: mouseRandomMoveTrueArea(1620,875,180,170); mouseSwitchClick("left"); break; //御灵结束 case 5:{ 
    next(); robot.delay(randomNum()); break; } //其他情况,就什么都没有,鼠标随机移动,有长时间移动和短时间移动 case -1: int choose= (int) (Math.random()*2); if (choose==1){ 
    int a=randomNum(1,0.5); System.out.println(a); robot.delay(a); }else{ 
    int b=randomNum(3,2); System.out.println(b); robot.delay(b); } randomMove(); break; }//switch(i) }//while(true) } //@String 图片的绝对路径。从本地文件读取目标图片 static public BufferedImage getBfImageFromPath(String keyImagePath) { 
    BufferedImage bfImage = null; try { 
    bfImage = ImageIO.read(new File(keyImagePath)); } catch (IOException e) { 
    e.printStackTrace(); } return bfImage; } /* 最核心的部分,代码块从这里修改 */ public static int chooseThingReturnNum(ArrayList<BufferedImage> images) throws AWTException { 
    Robot robot=new Robot(); for (BufferedImage image:images){ 
    //匹配是否为卑弥呼结束 if (matchImg(image,robot.createScreenCapture(new Rectangle(900,800,100,100)))){ 
    System.out.println("匹配到了卑弥呼结束"); return 1; }//有人要来协同任务的时候 else if (matchImg(image,robot.createScreenCapture(new Rectangle(1275,783,21,22)))){ 
    System.out.println("匹配到了协同取消"); return 2; }//是否在卑弥呼点挑战之前 else if(matchImg(image,robot.createScreenCapture(new Rectangle(1690,920,90,74)))){ 
    System.out.println("匹配到了要挑战卑弥呼"); return 3; }//御灵挑战 else if(matchImg(image,robot.createScreenCapture(new Rectangle(1670,907,98,86)))){ 
    System.out.println("匹配到了要挑战御灵"); return 4; }//御灵结束 else if(matchImg(image,robot.createScreenCapture(new Rectangle(980,784,10,10)))){ 
    System.out.println("匹配到了要御灵结束"); return 5; } } System.out.println("什么都没匹配到,随机移动"); return -1; } /* 随机移动到我自己设定的4个区域中的某一点,并且点击 */ public static void next() throws AWTException, InterruptedException { 
    //随机移动到一个区域中 int random= (int) (Math.random()*4); switch (random){ 
    //移动到左上角区域 case 1: mouseRandomMoveTrueArea(0,0,1270,200); mouseRandomMoveTrueArea(0, 0, 1270, 200); mouseSwitchClick("left"); break; //移动到左下角区域 case 2: mouseRandomMoveTrueArea(0, 200, 200, 880); mouseSwitchClick("left"); break; //右上角区域 case 3: mouseRandomMoveTrueArea(1580, 70, 340, 630); mouseSwitchClick("left"); break; //右下角区域 case 4: mouseRandomMoveTrueArea(670, 700, 1250, 380); mouseSwitchClick("left"); break; }//随机移动到某个区域结束 } /*匹配图片, * 输入参数:sourceImg 本地源文件,最大不超过100*100 * tempImg 当前系统捕抓到的部分屏幕,固定为100*100 * 输出参数:true或者false * 检查捕捉图片的每一个像素点是否和本地的源文件一样,全部一样就返回TRUE,有一个不一样都返回FALSE */ public static boolean matchImg(BufferedImage sourceImg,BufferedImage tempImg) { 
    int height = sourceImg.getHeight(); int width = sourceImg.getWidth(); for (int i = 0; i < height; i++) { 
    for (int j = 0; j < width; j++) { 
    int tempRGB = tempImg.getRGB(j, i); int testRGB = sourceImg.getRGB(j, i); if (tempRGB!=testRGB) { 
    return false; } } } return true; }//matchImg /* X,Y最大为1920和1080,隔一段时间后随机移动到某个位置,再隔一段时间 */ @Test public static void randomMove() throws AWTException { 
    Robot robot=new Robot(); int maxX=1920; int maxY=1080; double v=(0.2+Math.random()*0.3)*1000; robot.delay((int) v); int x = (int) (Math.random()*(maxX-1)); int y = (int) (Math.random()*(maxY-1)); robot.mouseMove(x,y); v=(0.2+Math.random()*0.3)*1000; robot.delay((int) v); } /* 鼠标随机移动到正确的区域 @参数分别为X轴,Y轴,宽,高 返回参数:int [] array:array[0]为X轴,array[1]为Y轴 */ public static void mouseRandomMoveTrueArea(int x,int y,int width,int height) throws AWTException { 
    int moveX= (int) (x+Math.random()*(width-1)); int moveY= (int) (y+Math.random()*(height-1)); Robot robot=new Robot(); robot.delay(randomNum()); robot.mouseMove(moveX,moveY); } /* @String key: left为按下左键,right为按下右键 */ public static void mouseSwitchClick(String key) throws AWTException, InterruptedException { 
    switch (key){ 
    case "left":mouseClick(InputEvent.BUTTON1_DOWN_MASK);break; case "right":mouseClick(InputEvent.BUTTON3_DOWN_MASK);break; default: System.out.println("请填入正确的参数"); } } /* @int buttons:与mouseSwitchClick函数配合使用 */ public static void mouseClick(int buttons) throws AWTException, InterruptedException { 
    Robot robot=new Robot(); robot.delay(randomNum()); robot.mousePress(buttons); robot.delay(randomNum()); robot.mouseRelease(buttons); robot.delay(randomNum()); Thread.sleep(randomNum(0.5,0.2)); } /* @double preTime:最小要几秒 @double maxTime:随机的数字最大值 @不写参数就默认(0.3+(0~0.3)) */ public static int randomNum(double preTime, double maxTime){ 
    int i = (int) ((preTime + Math.random() * maxTime) * 1000); // System.out.println(i); return i; } public static int randomNum(){ 
    int i = (int) ((0.3 + Math.random() * 0.3) * 1000); // System.out.println(i); return i; } public static void main(String[] args) throws AWTException, InterruptedException { 
    new gotoStart(); }//main } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209112.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:00
下一篇 2026年3月19日 上午10:00


相关推荐

  • JAVA 实现简单的学生成绩管理系统

    JAVA 实现简单的学生成绩管理系统一、实验目的1.掌握java的类与对象的基本概念;2.掌握简单的信息管理系统的设计与实现。二、实验环境实验建议在安装了以下软件的计算机上完成:1.Windowsxp/win7/win8/win10操作系统2.JDK1.6以上版本3.Eclipse或NetBeansIDE或EditPlus或其它开发工具三、实验内容与要求(一)问题描述要求采用java…

    2022年7月13日
    19
  • 图像处理-激光测距技术&工业相机基本原理概述「建议收藏」

    图像处理-激光测距技术&工业相机基本原理概述「建议收藏」激光测距技术与一般光学测距技术相比,具有操作方便、系统简单及白天和夜晚都可以工作的优点.与雷达测距相比,激光测距具有良好的抗干扰性和很高的精度,而且激光具有良好的抵抗电磁波干扰的能力,尤其在探测距离较长时,激光测距的优越性更为明显.激光测距技术是指利用射向目标的激光脉冲或连续波激光束测量目标距离的距离测量技术.比较常用的激光测距方法有脉冲法、相位法、三角法和干涉法激光测距.本文主要探讨下激光三角法的基本原理和工业相机原理:1.1激光三角法的基本原理光电技术的快速发展,以及计算.

    2022年5月30日
    42
  • 浪潮服务器 安装系统_浪潮服务器安装centos7

    浪潮服务器 安装系统_浪潮服务器安装centos7《浪潮服务器系统安装操作》由会员分享,可在线阅读,更多相关《浪潮服务器系统安装操作(3页珍藏版)》请在人人文库网上搜索。1、浪潮服务器系统安装总结一、首先创建虚拟磁盘:1、开机引导项Ctrl+h,在AdapterSelection屏幕中单击Start。2、此时,将打开MegaRaidBIOSConfigUtilityVirtualConfiguration屏幕…

    2022年10月5日
    7
  • java必背代码_Java编程中必须要死记硬背的几十个代码段

    java必背代码_Java编程中必须要死记硬背的几十个代码段向文件末尾添加内容字符串有整型的相互转换转字符串到日期java.util.Date=java.text.DateFormat.getDateInstance().parse(dateString);得到当前方法的名字StringmethodName=Thread.currentThread().getStackTrace()[1].getMethodName();使用JDBC链接O…

    2022年7月7日
    30
  • 也谈谈动态绑定dropdownlist(1)

    也谈谈动态绑定dropdownlist(1)说来,很多的dropdownlist选项都不是固定的,是会动态改变的,一种方法是在页面上写死,改变时,直接修改页面就可以了。但是很多人是使用动态绑定的,因此dropdownlist的Text和Valu

    2022年7月3日
    29
  • 试题 H: 人物相关性分析 第十届蓝桥杯

    试题 H: 人物相关性分析 第十届蓝桥杯

    2021年7月4日
    72

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号