1
0
mirror of https://github.com/davpapp/PowerMiner synced 2025-03-11 07:39:40 -04:00

Started mouse moving function

This commit is contained in:
davpapp 2018-01-24 04:18:18 -05:00
parent 5fa3894245
commit a3fb536210
11 changed files with 84 additions and 50 deletions

Binary file not shown.

Binary file not shown.

BIN
bin/MousePoint.class Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,10 +1,8 @@
/* Reads a file of coordinates /* Reads a file of coordinates
*
*
* Testing:
* - Only valid coordinates are added (through regex)
* -
*/ */
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
@ -16,12 +14,28 @@ import java.util.regex.Pattern;
public class Mouse { public class Mouse {
private ArrayList<MousePath> mousePaths; private ArrayList<MousePath> mousePaths;
PointerInfo pointer;
public Mouse(String path) { public Mouse(String path) {
pointer = MouseInfo.getPointerInfo();
mousePaths = new ArrayList<MousePath>(); mousePaths = new ArrayList<MousePath>();
readFile(path); readFile(path);
} }
public void moveMouse(int xGoal, int yGoal) {
Point startingPoint = pointer.getLocation();
int x = (int) startingPoint.getX();
int y = (int) startingPoint.getY();
for (MousePath mousePath : mousePaths) {
MousePoint pathStartingPoint = mousePath.getStartingPoint();
if (pathStartingPoint.distance(startingPoint) < 20.0) {
System.out.println("Found possible path!");
mousePath.display();
}
}
}
public void readFile(String path) { public void readFile(String path) {
try { try {
File file = new File(path); File file = new File(path);
@ -30,9 +44,9 @@ public class Mouse {
Pattern linePattern = Pattern.compile("[0-9]*,[0-9]*,[0-9]*$"); Pattern linePattern = Pattern.compile("[0-9]*,[0-9]*,[0-9]*$");
String line; String line;
Point lastPoint = new Point(0, 0, 0); MousePoint lastPoint = new MousePoint(0, 0, 0);
int numberOfRepeats = 0; int numberOfRepeats = 0;
ArrayList<Point> currentPath = new ArrayList<Point>(); ArrayList<MousePoint> currentPath = new ArrayList<MousePoint>();
currentPath.add(lastPoint); currentPath.add(lastPoint);
while ((line = bufferedReader.readLine()) != null) { while ((line = bufferedReader.readLine()) != null) {
@ -41,7 +55,7 @@ public class Mouse {
continue; continue;
} }
Point point = getPointFromLine(line); MousePoint point = getPointFromLine(line);
if (!point.isValid()) { if (!point.isValid()) {
continue; continue;
} }
@ -77,9 +91,22 @@ public class Mouse {
return false; return false;
} }
private Point getPointFromLine(String line) { private MousePoint getPointFromLine(String line) {
String[] parts = line.split(Pattern.quote(",")); String[] parts = line.split(Pattern.quote(","));
return new Point(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[2])); return new MousePoint(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
}
/// ---------------------- Getters ----------------------------------------
public int getNumberOfPaths() {
return mousePaths.size();
}
public ArrayList<MousePath> getMousePaths() {
return mousePaths;
} }
public void displayPaths() { public void displayPaths() {
@ -89,13 +116,4 @@ public class Mouse {
} }
System.out.println("There are " + mousePaths.size() + " paths."); System.out.println("There are " + mousePaths.size() + " paths.");
} }
public int getNumberOfPaths() {
return mousePaths.size();
}
public ArrayList<MousePath> getMousePaths() {
return mousePaths;
}
} }

View File

@ -6,17 +6,17 @@ import java.util.ArrayList;
public class MousePath { public class MousePath {
private ArrayList<Point> path; private ArrayList<MousePoint> path;
private int numPoints; private int numPoints;
private Point startingPoint; private MousePoint startingPoint;
private Point endingPoint; private MousePoint endingPoint;
private int timespan; private int timespan;
public MousePath(ArrayList<Point> _path) public MousePath(ArrayList<MousePoint> _path)
{ {
path = new ArrayList<Point>(_path.size()); path = new ArrayList<MousePoint>(_path.size());
for (Point point : _path) { for (MousePoint point : _path) {
Point pointCopy = new Point(point.getX(), point.getY(), point.getTime()); MousePoint pointCopy = new MousePoint(point.getX(), point.getY(), point.getTime());
path.add(pointCopy); path.add(pointCopy);
} }
numPoints = path.size(); numPoints = path.size();
@ -25,7 +25,7 @@ public class MousePath {
timespan = endingPoint.getTime() - startingPoint.getTime(); timespan = endingPoint.getTime() - startingPoint.getTime();
} }
public ArrayList<Point> getPath() { public ArrayList<MousePoint> getPath() {
return path; return path;
} }
@ -37,8 +37,16 @@ public class MousePath {
return timespan; return timespan;
} }
public MousePoint getStartingPoint() {
return startingPoint;
}
public MousePoint getEndingPoint() {
return endingPoint;
}
public void display() { public void display() {
for (Point p : path) { for (MousePoint p : path) {
System.out.println("(" + p.getX() + ", " + p.getY() + "), " + p.getTime()); System.out.println("(" + p.getX() + ", " + p.getY() + "), " + p.getTime());
} }
System.out.println("Length:" + numPoints + ", Timespan:" + timespan); System.out.println("Length:" + numPoints + ", Timespan:" + timespan);

View File

@ -1,10 +1,12 @@
public class Point { import java.awt.Point;
public class MousePoint {
private int x; private int x;
private int y; private int y;
private int time; private int time;
public Point(int _x, int _y, int _time) public MousePoint(int _x, int _y, int _time)
{ {
x = _x; x = _x;
y = _y; y = _y;
@ -26,10 +28,14 @@ public class Point {
return time; return time;
} }
public boolean isSameLocation(Point p2) { public boolean isSameLocation(MousePoint p2) {
return (this.x == p2.getX() && this.y == p2.getY()); return (this.x == p2.getX() && this.y == p2.getY());
} }
public double distance(MousePoint p2) {
return Math.hypot(this.x - p2.getX(), this.y - p2.getY());
}
public double distance(Point p2) { public double distance(Point p2) {
return Math.hypot(this.x - p2.getX(), this.y - p2.getY()); return Math.hypot(this.x - p2.getX(), this.y - p2.getY());
} }
@ -39,11 +45,11 @@ public class Point {
if (obj == null) { if (obj == null) {
return false; return false;
} }
if (!(obj instanceof Point)) { if (!(obj instanceof MousePoint)) {
return false; return false;
} }
Point p = (Point) obj; MousePoint p = (MousePoint) obj;
// Compare the data members and return accordingly // Compare the data members and return accordingly
return (this.x == p.x && this.y == p.y && this.time == p.time); return (this.x == p.x && this.y == p.y && this.time == p.time);

View File

@ -6,7 +6,7 @@ class PointTest {
@Test @Test
void initializePointTest() { void initializePointTest() {
Point p = new Point(54, 4, 134); MousePoint p = new MousePoint(54, 4, 134);
assertEquals(p.getX(), 54); assertEquals(p.getX(), 54);
assertEquals(p.getY(), 4); assertEquals(p.getY(), 4);
assertEquals(p.getTime(), 134); assertEquals(p.getTime(), 134);
@ -14,31 +14,31 @@ class PointTest {
@Test @Test
void isValidPointTest() { void isValidPointTest() {
Point p1 = new Point(54, 4, 134); MousePoint p1 = new MousePoint(54, 4, 134);
assertEquals(p1.isValid(), true); assertEquals(p1.isValid(), true);
Point p2 = new Point(-3, 84, 832); MousePoint p2 = new MousePoint(-3, 84, 832);
assertEquals(p2.isValid(), false); assertEquals(p2.isValid(), false);
Point p3 = new Point(1940, 84, 832); MousePoint p3 = new MousePoint(1940, 84, 832);
assertEquals(p3.isValid(), false); assertEquals(p3.isValid(), false);
Point p4 = new Point(3, -5, 832); MousePoint p4 = new MousePoint(3, -5, 832);
assertEquals(p4.isValid(), false); assertEquals(p4.isValid(), false);
Point p5 = new Point(0, 1084, 832); MousePoint p5 = new MousePoint(0, 1084, 832);
assertEquals(p5.isValid(), false); assertEquals(p5.isValid(), false);
Point p6 = new Point(0, 1001, -4); MousePoint p6 = new MousePoint(0, 1001, -4);
assertEquals(p6.isValid(), false); assertEquals(p6.isValid(), false);
} }
@Test @Test
void isSameLocationTest() { void isSameLocationTest() {
Point p1 = new Point(54, 4, 134); MousePoint p1 = new MousePoint(54, 4, 134);
Point p2 = new Point(54, 4, 832); MousePoint p2 = new MousePoint(54, 4, 832);
Point p3 = new Point(85, 4, 832); MousePoint p3 = new MousePoint(85, 4, 832);
Point p4 = new Point(54, 12, 832); MousePoint p4 = new MousePoint(54, 12, 832);
assertEquals(p1.isSameLocation(p2), true); assertEquals(p1.isSameLocation(p2), true);
assertEquals(p1.isSameLocation(p3), false); assertEquals(p1.isSameLocation(p3), false);
assertEquals(p1.isSameLocation(p4), false); assertEquals(p1.isSameLocation(p4), false);
@ -46,10 +46,10 @@ class PointTest {
@Test @Test
void distanceTest() { void distanceTest() {
Point p1 = new Point(54, 4, 134); MousePoint p1 = new MousePoint(54, 4, 134);
Point p2 = new Point(54, 4, 832); MousePoint p2 = new MousePoint(54, 4, 832);
Point p3 = new Point(85, 4, 832); MousePoint p3 = new MousePoint(85, 4, 832);
Point p4 = new Point(85, 12, 832); MousePoint p4 = new MousePoint(85, 12, 832);
assertEquals(p1.distance(p2), 0.0); assertEquals(p1.distance(p2), 0.0);
assertEquals(p1.distance(p3), 31.0); assertEquals(p1.distance(p3), 31.0);

View File

@ -8,7 +8,9 @@ public class main {
//URL url = main.class.getClassLoader().getResource("testfiles/mouse_path_test1.txt"); //URL url = main.class.getClassLoader().getResource("testfiles/mouse_path_test1.txt");
//System.out.println(url.getPath()); //System.out.println(url.getPath());
//getResource("testfiles/mouse_path_test1.txt"); //getResource("testfiles/mouse_path_test1.txt");
Mouse mouse = new Mouse("/home/dpapp/eclipse-workspace/RunescapeAI/testfiles/mouse_path_test1.txt"); System.out.println("Starting mouse script...");
mouse.displayPaths(); Mouse mouse = new Mouse("/home/dpapp/GhostMouse/coordinates.txt");
//mouse.displayPaths();
mouse.moveMouse(743, 414);
} }
} }