java.awt.Robot

据说这个一般是用来做自动化测试的,也可以用来做脚本。今天就一起来看看里面有些什么好玩的吧。

1、对鼠标的操作

实例化Robot对象后可以move鼠标,press或者release左、中、右三个鼠标按键。
对鼠标move时会涉及到坐标的问题,也就是像素位置,但是电脑的显示设置有缩放,所以屏幕又下角不一定是(maxX,maxY),而且我不知道为什么同样的像素值,两次运行后鼠标位置不一样,所以我建议将显示设置里面的缩放设置为100%。
然后就是点击,press和release,这里需要注意的就是人和机器之间的不同,人按下和释放按钮是会有延迟的,而机器可以没有延迟,所以我们得在press和release后加上延迟,而且人的延迟时间不会是一直不变的,所以我们需要导入一个random随机数,格式是random.nextDouble()*(上限值-下限值) + 下限值。

import java.awt.*;
import java.awt.event.InputEvent;
import java.util.Random;
public class Game1 {
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();
        Random random = new Random();

        robot.mouseMove(100,100);  //移动鼠标

        robot.mousePress(InputEvent.BUTTON1_MASK);  // 按下鼠标
        double e = random.nextDouble()*(0.4-0.2) + 0.2;
        robot.delay((int) (e * 1000));
        robot.mouseRelease(InputEvent.BUTTON1_MASK);  // 释放鼠标
        e = random.nextDouble()*(0.4-0.2) + 0.2;
        robot.delay((int) (e * 1000));
    }
}

2、对键盘的操作

键盘其实也就一个人机不同,就是延迟问题

import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.Random;
public class Game2 {
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();
        Random random = new Random();

        robot.keyPress(KeyEvent.VK_A);
        double e1 = random.nextDouble()*(0.4-0.2) + 0.2;
        robot.delay((int) (e1 * 1000));
        robot.keyRelease(KeyEvent.VK_A);
        e1 = random.nextDouble()*(0.4-0.2) + 0.2;
        robot.delay((int) (e1 * 1000));
    }
}

3、识别颜色

在robot里面有一个getPixelColor方法可以识别指定坐标的颜色,返回一个Color类,可以用Colore类里的getRed、getGreen和getBlue来返回这个颜色的RGB值。

import java.awt.*;
public class Game3 {
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();

        Color color = robot.getPixelColor(100,100);
        System.out.println(color.getRed() + ", " + color.getGreen() + ", " + color.getBlue());
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值