Program Clicker - brak pomysłu na rozbudowanie.

0

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.

1

Zrób mapę koordynatów, gdzie kluczem będzie koordynat, a wartością przycisk myszy klikany, więc pozwól dodawać userom koordynaty i wybrać jaki przycisk myszy (a może też żaden) chcieliby kliknąć na danym miejscu, następnie możesz użyć czegoś w stylu:

						robot.setAutoDelay(500);
						robot.mouseMove(x, y);
						robot.mousePress(InputEvent.BUTTON3_MASK);
						robot.mouseRelease(InputEvent.BUTTON3_MASK);
0

Nikt nie jest w stanie pomóc?

1

Wzorzec Command plus wzorzec Composite.

1 użytkowników online, w tym zalogowanych: 0, gości: 1