思路:
1.截取安卓模拟器对应窗口的图像内容
2.处理图像找出起点和终点
3.计算距离
4.鼠标事件
经过:
1.一开始想先将截图储存在某个路径,在用文件流读取那个图片,对图片进行处理。之后发现直接对BufferedImage里的内容进行处理更方便。
2.在计算距离的时候遇到了一点困难,用了取巧的办法。即找到新台阶中心点的横坐标,找到小人起跳点的横坐标,相减求得横向距离。手测三角形的长边和底边的比例,乘一下求出距离。
3.距离和按键时间的关系一开始以为是线性关系,后来发现好像并不是这样,想利用神经网络来拟合一下,还在思考实现方法。
结果:
1.能够自动地在安卓模拟器上刷到600+分,遇到圆形小台阶不是很稳,会掉下去。
2.在遇到圆形台阶时距离的测算会遇到一点问题,应该是三角形的形状变了,导致距离计算不准确,很难刷到高分。
待改进:
1.拟合距离-时间公式。
2.找到测距离更准确的办法。
窗口截取:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.image.*;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import java.awt.*;
public class ScreenCut {
private static int startX = 0;
private static int startY = 0;
private static int width = 0;
private static int height = 0;
private static String path = "";
private static int[][] data = null;
public static void main(String[] args)
{
ScreenCut();
}
public static int[][] ScreenCut()
{
startX = 7;
startY = 45;
width = 540;
height = 960;
path = "C:\\Users\\Administrator\