据说这个一般是用来做自动化测试的,也可以用来做脚本。今天就一起来看看里面有些什么好玩的吧。
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());
}
}