|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2006
Messaggi: 136
|
[java] Robot & getPixelColor
allora, sto creando un programma che, da come si puo intuire dal titolo, faccia delle cose al posto mio :P
il problema è il seguente: ho bisogno che questo vada in una certa posizione dello schermo e mi prenda il colore del pixel, poi passi al pixel alla sua destra e faccia la stessa cosa. tutto funziona se fatto girare su eclipse o con una finestra/immagine davanti ad eclipse (mi da giustamente una serie di pixel bianchi e ogni tanto uno nero, dovuto alle scritte). il problema arriva quando voglio fargli fare questo aprendo una finestra, sulla quale poi deve fare cio' che gli dico. allora, ecco il codice: Codice:
public static void searchForMovement(Robot myRobot) { Color[] firstShot = new Color[215]; Color[] secondShot = new Color[215]; for(int i = 0; i < 214; i++) { myRobot.mouseMove((106 + i), 504); firstShot[i] = myRobot.getPixelColor((106 + i), 504); } for(int i = 0; i < 214; i++) { System.out.println(firstShot[i].toString()); } myRobot.delay(1500 + (int)(Math.random() * 1000)); for(int i = 0; i < 214; i++) { myRobot.mouseMove((106 + i), 504); secondShot[i] = myRobot.getPixelColor((106 + i), 504); } } Codice:
java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] [...] java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0] Codice:
java.awt.Color[r=221,g=224,b=231] java.awt.Color[r=221,g=224,b=231] java.awt.Color[r=221,g=224,b=231] java.awt.Color[r=221,g=224,b=231] java.awt.Color[r=221,g=224,b=231] java.awt.Color[r=221,g=224,b=231] java.awt.Color[r=221,g=224,b=231] [...] java.awt.Color[r=221,g=224,b=231] java.awt.Color[r=221,g=224,b=231] PS: ho provato a passare dal createScreenCapture per fare uno screenshot, ma poi ho solo il metodo getRGB per poter ottenere il colore che tuttavia per due pixel rossi ottengo un int differente -.- (forse l'int che ottengo da getRGB contiene informazioni anche a proposito della sua posizione)...qualche idea per poter ovviare a questo? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
Non vorrei dire una stupidata, ma non e' che il gioco prende "possesso" dei dispositivi di input (keyboard e mouse) con le directinput, e quindi non ti fa muovere il mouse? Quindi tu prendi il colore di un solo pixel?
Magari e' una stupidata pero'.. ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2006
Messaggi: 136
|
in effetti hai ragione...per poter interagire con il gioco servono sia mouse che tastiera...si puo comunque obbligarlo a muoverlo in un qualche modo?
provero' allora nel modo seguente: Codice:
public static void searchForMovement(Robot myRobot) { BufferedImage print1 = myRobot.createScreenCapture(new Rectangle(1400, 900)); myRobot.delay(1500 + (int)(Math.random() * 100)); BufferedImage print2 = myRobot.createScreenCapture(new Rectangle(1400, 900)); int[] pixelArrayPrint1 = new int[215]; int[] pixelArrayPrint2 = new int[215]; for(int i = 0; i < 214; i++) { pixelArrayPrint1[i] = print1.getRGB((106 + i), 504); pixelArrayPrint2[i] = print2.getRGB((106 + i), 504); } } |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
Credo tu abbia comunque problemi..
Non so come aiutarti pero'.. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:23.