Witajcie,
Od pewnego czasu w głowie na swój pierwszy projekt miałem program Clickera. Do tej pory udało mi się napisać kod, który odpowiada za to aby najpierw użytkownik wykonywał pewne ruchy myszką, następnie jego ruchy są odtwarzane. Chciałbym program rozwinąć o dodatkową funkcjonalność jaką byłoby klikanie, lecz brakuje mi pewnego rozezniania się jak mógłby wyglądać zarys takiego kodu, choć pomysł w głowie mam. Liczę na drobną podpowiedź z Waszej strony, i aby nie było nieporozumień nie chcę aby ktoś napisał to za mnie, ale o podsunięcie rozwiązania. Zdaję sobe sprawę, że brak pomysłu wynika tylko i wyłącznie z mojego dość małego doświadczenia, lecz chciałbym je powiększyć właśnie o ten projekt. Z góry dziękuję wszystkim!
Kod
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.util.ArrayList;
public class CoursorMove {
private ArrayList<Point> coordinates = new ArrayList<>();
private int sizeArrayListCoordinates;
private int moveCoursorIndex;
public void addNewObjectWithCoordinates() {
coordinates.add(MouseInfo.getPointerInfo().getLocation());
}
public Point getCoordinate(int index) {
return coordinates.get(index);
}
public void gettingMouseCoordinates() {
for (int i = 0; i < 1000; i++) {
addNewObjectWithCoordinates();
System.out.println(getCoordinate(i).getX());
try {
Thread.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
sizeArrayListCoordinates = coordinates.size(); // updating
// sizeArrayListCoordinates
// value
}
}
public void moveCoursor() {
while (moveCoursorIndex < sizeArrayListCoordinates) {
try {
Robot robot = new Robot();
robot.mouseMove(coordinates.get(moveCoursorIndex).x, coordinates.get(moveCoursorIndex).y);
robot.delay(15);
} catch (AWTException e) {
System.err.println("Error void MC");
e.printStackTrace();
}
moveCoursorIndex++;
}
}
}
Klasa Main
public class Main {
public static void main(String[] args) {
CoursorMove triup = new CoursorMove();
triup.gettingMouseCoordinates();
triup.moveCoursor();
}
}
Myśłałem, że można by w jakiś sposób zastosować coś na zasadzie pętli, ale nie chcę tworzyć jakiejś drabinki ifów. Również jako tako miałem pomysł na stworzenie coś ala ArrayList i dodawaniu w nm przebieg w jaki sposób program miałby się odtwarzać czyli np. ruch-ppm-lpm-ruch. Ale tutaj pojawiła by się dziwna rzecz tworzenie arraylist w arraylist? To chyba nie byłoby dobre rozwiązanie.