Ihr möchtet einen Bot in Java Programmieren aber wisst nicht womit ihr Anfangen sollt ? Dann seid ihr hier genau richtig !
Hier will ich euch die Robot Class von Java näher bringen, denn mit ihr kann man eniges Anfangen was man auch für Bots nutzen kann wie die Attacken durch Tastendrücken ausführen, Pixel auslesen um z.b den HP Status dadurch zu erkennen usw.
1. Was ist die Robot Class und was kann sie ?
2. Aller Anfang ist leicht
2.1 Die Robot Class einbinden
2.2 Ein Robot Objekt erstellen
3. Pixel Auswertung und Bearbeitung
4. Übernimmt die Kontrolle !
4.1 Die Maus
4.2 Die Tastatur
4.3 Delay
5. Anmerkung
1. Was ist die Robot Class und was kann sie ?
Die Robot Class stammt von der AWT Class von Java ab, ihre eigenschaft ist es das sie die Kontrolle über die Maus und Tastatur übernehmen kann und man somit einiges Anstellen kann. Außerdem kann sie auch dazu dienen den Bildschirm nach Pixel abzusuchen und zu bestimmen.
Die Robot Class besitzt dazu enige Methoden welche man gut in dieser Grafik sehen kann:
Was die Methoden genau machen werd ich gleich erklären.
2. Aller Anfang ist leicht
2.1 Die Robot Class einbinden
Um die Robot Class überhaupt nutzen zu können muss man die KLasse ersteinmal in unser Programm einbinden, dies geschiet unter Java mit dem "import" Befehl.
Da die Robot Class zu "AWT" gehört schreiben wir:
Somit ist unser Robot importiert und wir können zum nächsten Schritt weiter gehen.
2.2 EIn Robot Objekt erstellen
Um die Methoden der Robot Klasse nutzen zu können muss man vorher ein Objekt erstellen, dieses Objekt ist die Schnittstelle für unsere Werte die wir übergeben wollen und den Methoden der Klasse.
Dafür schreiben wir:
Das erste Robot sagt aus welcher Klasse unser neues Objekt gehören soll, das Robo ist unser Objekt Name, ihr könnt euer Objekt nennen wie ihr wollt ! Das new Robot(); ruft den Konstruktor der Klasse Robot auf und übergibt die Standart Parameter unserem Objekt Robo. Und schon haben wir es geschafft, unser erstes Robot Objekt wurde erstellt.
3. Pixel Auswertung und Bearbeitung
Da Bots öfters mal die Pixel aus dem Bildschirm Auslesen müssen sind unsere Robot Methoden perfekt dafür geeignet.
Dafür verwenden wir folgende Methode:
Das Robo steht für unser Objekt, durch den Punkt können wir danach die Methoden auswählen und nutzen die die Klasse uns zur verfügung stellt, nach dem Punkt kommt immer der Name der Methode. Nach dem Namen gibt es immer ein ( ), um Werte an die Methode zu übergeben. In unserem Fall müssen wir Koordinaten von unserem Bildschirm der Methode übergeben. Diese gibt danach die Pixel Farben von der Koordinate wieder.
Doch um diese Farben speichern zu können brauchen wir noch eine Variable welche auch unsere Daten speichern kann. Dies geht nur durch ein Objekt der Klasse Color. Wie bei Robot müssen wir zuerst die Klasse importieren:
Danach erstellen wir wieder ein Objekt dafür:
Somit haben wir ein Objekt mit dem Namen Pixel welche Farbwerte speichern kann, die (0,0,0) sind Werte die man dem Kontstruktor am Anfang übergibt. Wenn man das Objekt jetzt Ausgeben würde, würde man java.awt.Color[r=0,g=0,b=0] sehen. Wobei die Nullen für Rot, Blau, Grün stehen.
So jetzt wieder zum Eigentlichen Thema dem Pixel auslesen.
Damit unsere getPixelColor Methode weiß von wo sie Überhaupt die Pixel auslesen soll müssen wir ihr Koordinaten übergeben, dies machen wir durch den x und y wert. Wir können entwerder Direkt Werte in die Klammern setzen, oder wir werden Variablen dafür.
Hier zwei Beispiele:
Hier übergibt er unserem Pixel Objekt die drei Farbwerte von der Position (100,100)
In dem zweiten Beispiel deklarieren wir die zwei Variablen x und y mit zwei Startwerten. Somit werden die Pixel Werte von der Position 150,200 ausgelesen und unserem Pixel Objekt übergeben.
Doch was kann man damit jetzt Anstellen ?
Man kann damit auf bestimmte Sachen reagieren wie zum Beispiel wir Wissen das falls an einer Stelle die Farbe Rot auftaucht er das Programm beenden soll.
Eine kurze Erklärung: Wir erstellten diesmal 2 Objekte von der Klasse Color, die erste dient dazu um zu Wissen was für Werte unsere Farbe "Rot" haben soll, und das zweite dient dazu um unsere Werte die wir Testen iwo Speichern zu können. Danach Speichern wir die Pixel Werte von der Position 100,100 und gucken durch die IF-Verzweigung ob unser Rot die gleichen Werte hat wie unsere Pixel. Falls ja beendet er das Programm mit System.exit();
4. Übernimmt die Kontrolle !
4.1 Die Maus
Wie schon gesagt können wir auch die Kontrolle der Maus übernehmen um z.b bestimmte Knöpfe drücken zu lassen. Dafür nutzen wir die Methoden:
Wie in den Methoden zuvor nutzen wir wieder unser Robo Objekt welches für uns die Methoden aufruft, in der ersten Methode wird die Maus zur einer Bestimmten Position bewegt indem man in den Klammern wie bei der Pixel-Methode die Koordinaten übergibt. Die Zweite Methode drückt eine Maustaste die wir in der Klammer angeben, und die letzte Methode dient dazu die Taste auch loszulassen ! Denn wer will schon dass das Programm eine Taste für immer gedrückt hält ?
Um wieder was anschauliches zu haben ein kleines Beispiel:
Hier bewegt sich unsere Maus zur Position 100,300 und bleibt auch dort bis man die Maus wieder selber bewegt.
Und wieder ein Beispiel wie mein Pixel auslesen, die Maus bewegt sich durch die Varaiblen zur Position 200,600.
Und jetzt Kombinieren wir das ganze mit unseren Maustasten gedrücke =) Vorher müsst ihr aber wieder mal was importieren um die Maustasten nutzen zu können:
Jetzt zum eingemachten;
In der ersten Zeile Bewegen wir unsere Maus zur Position 100,300, danach wird in der zweiten Zeile unsere mousePress Methode ausgerufen und ihr unser InputEvent übergeben, also welche Taste gedrückt werden soll. In unserem Fall nehmen wir den BUTTON3, dies ist bei mir die Rechte Maustaste. Dies kann vll. bei euch anders sein kommt auf die Hardware drauf an. Zum schluss wird in der dritten Zeile unsere rechte Maustaste wieder losgelassen.
4.2 Die Tastatur
Das gleiche wie mit der Maus können wir auch mit der Tastatur anstellen, nur das wir hier auch mehrere Tasten gleichzeitig drücken lassen können um zum Beispiel ein Alt + F4 drücken zu lassen.
Für die Tastatur verwenden wir folgende Methoden:
Die keyPress Methode ( wie der Name schon sagt ) drückt unsere Taste, dafür müssen wir in den Klammern den keycode der Taste der Methode übergeben, die zweite Methode dient wie schon bei der Maus dazu das die Taste eines Tages auch losgelassen wird.
Ein einfaches Beispiel:
Es wird die Taste "V" ( nicht zu verwechseln mit v ) gedrückt und danach wieder losgelassen.
Dies kann man unendlich oft wiederholen lassen mit einer while schleife, oder einfach in dem man die Events hintereinander wiederholt:
Somit lassen wir das Wort "Hallo" schreiben. Doch um Tastenkombinationen auszuführen müssen wir ein kleines wenig anders vorgehen:
Auf den ersten Blick kaum ein unterschied zu sehen, doch wenn man genauer schaut sieht man das zuerst die zwei Tasten gedrückt werden, und danach erst die Tasten losgelassen, und nicht wie vorher "Drücken -> Loslassen". Somit wird zurerst die ALT Taste gedrückt und danach die F4 Taste und erst danach werden beide Losgelassen, und somit haben wir unsere Tastenkombination ausgeführt. Somit ist es auch möglich Sachen aus dem zwichenspeicher einzufügen usw.
4.3 Delay
Da wir bis jetzt die Tasten, die Maus und die Pixelabfragen immer gleich beendet haben, haben wir meistens nicht viel davon.
Das beste Beispiel dafür ist falls wir wollen das sich unsere Spielfigur bewegen soll, falls wir
benutzen wird sich die Figur nicht ein cm Bewegen weil der Tastendruck so kurz ist dass das Spiel es gar nicht merkt. Was soll man aber dagegen tun ? Eine Lösung ist es einfach die Taste gedrückt zu halten anstatt sie gleich wieder Loszulassen.
Dafür gibt es die Delay Methode:
Durch diese Methode wartet das Programm eine Bestimmte Zeit ab bevor es in die nächste Programmier Zeile geht um diese Auszuführen. Wie man schon sieht gibt man diese Zeitangebe in MS ein. 1000 MS = 1 Sekunde !
In der ersten Zeile wird die Taste w gedrückt, und da wir ein delay eingebaut haben wird diese Taste auch zwei Sekunden gehalten da er Befehl zum Tastenloslassen erst nach dem delay ausgeführt wird.
Dies kann man an sich für alles Verwenden.
5. Anmerkung
Ich habe hier nicht alle Methoden gezeigt weil man diese für den Anfang gar nicht braucht, doch die wichtigsten Sachen sind dabei um anzufangen mit der Klasse rumzuspielen, doch dies sind nur die Grundlagen um damit ein Bot schreiben zu können muss man noch viele andere Dinge einsetzen wie Keyevents usw.
Ihr solltet beim Ausprobieren darauf Aufpassen was ihr Codet! Falls ihr auf die Idee kommt sowas wie zu schreiben:
könnt ihr euren PC schonmal neu Starten da ihr danach gar nichts mehr auf dem Rechner machen könnt da die KOntrolle über die Tastatur ganze Zeit eurem Programm dann gehört :P
Viel spaß !
mfg
obi
Hier will ich euch die Robot Class von Java näher bringen, denn mit ihr kann man eniges Anfangen was man auch für Bots nutzen kann wie die Attacken durch Tastendrücken ausführen, Pixel auslesen um z.b den HP Status dadurch zu erkennen usw.
1. Was ist die Robot Class und was kann sie ?
2. Aller Anfang ist leicht
2.1 Die Robot Class einbinden
2.2 Ein Robot Objekt erstellen
3. Pixel Auswertung und Bearbeitung
4. Übernimmt die Kontrolle !
4.1 Die Maus
4.2 Die Tastatur
4.3 Delay
5. Anmerkung
1. Was ist die Robot Class und was kann sie ?
Die Robot Class stammt von der AWT Class von Java ab, ihre eigenschaft ist es das sie die Kontrolle über die Maus und Tastatur übernehmen kann und man somit einiges Anstellen kann. Außerdem kann sie auch dazu dienen den Bildschirm nach Pixel abzusuchen und zu bestimmen.
Die Robot Class besitzt dazu enige Methoden welche man gut in dieser Grafik sehen kann:
[Only registered and activated users can see links. Click Here To Register...]
Was die Methoden genau machen werd ich gleich erklären.
2. Aller Anfang ist leicht
2.1 Die Robot Class einbinden
Um die Robot Class überhaupt nutzen zu können muss man die KLasse ersteinmal in unser Programm einbinden, dies geschiet unter Java mit dem "import" Befehl.
Da die Robot Class zu "AWT" gehört schreiben wir:
Code:
import java.awt.Robot;
2.2 EIn Robot Objekt erstellen
Um die Methoden der Robot Klasse nutzen zu können muss man vorher ein Objekt erstellen, dieses Objekt ist die Schnittstelle für unsere Werte die wir übergeben wollen und den Methoden der Klasse.
Dafür schreiben wir:
Code:
Robot Robo = new Robot();
3. Pixel Auswertung und Bearbeitung
Da Bots öfters mal die Pixel aus dem Bildschirm Auslesen müssen sind unsere Robot Methoden perfekt dafür geeignet.
Dafür verwenden wir folgende Methode:
Code:
Robo.getPixelColor(x, y);
Doch um diese Farben speichern zu können brauchen wir noch eine Variable welche auch unsere Daten speichern kann. Dies geht nur durch ein Objekt der Klasse Color. Wie bei Robot müssen wir zuerst die Klasse importieren:
Code:
import java.awt.Color;
Code:
Color Pixel = new Color(0,0,0);
So jetzt wieder zum Eigentlichen Thema dem Pixel auslesen.
Damit unsere getPixelColor Methode weiß von wo sie Überhaupt die Pixel auslesen soll müssen wir ihr Koordinaten übergeben, dies machen wir durch den x und y wert. Wir können entwerder Direkt Werte in die Klammern setzen, oder wir werden Variablen dafür.
Hier zwei Beispiele:
Code:
Pixel = Robo.getPixelColor(100, 100);
Code:
int x = 150, y = 200; Pixel = Robo.getPixelColor(x, y);
Doch was kann man damit jetzt Anstellen ?
Man kann damit auf bestimmte Sachen reagieren wie zum Beispiel wir Wissen das falls an einer Stelle die Farbe Rot auftaucht er das Programm beenden soll.
Code:
Color Rot = new Color(100,0,0);
Color Pixel = new Pixel(0,0,0);
Pixel = Robo.getPixelColor(100, 100);
if(Rot.equals(Pixel))
System.exit();
4. Übernimmt die Kontrolle !
4.1 Die Maus
Wie schon gesagt können wir auch die Kontrolle der Maus übernehmen um z.b bestimmte Knöpfe drücken zu lassen. Dafür nutzen wir die Methoden:
Code:
Robo.mouseMove(x, y); Robo.mousePress(buttons); Robo.mouseRelease(buttons);
Um wieder was anschauliches zu haben ein kleines Beispiel:
Code:
Robo.mouseMove(100,300);
Code:
int x = 200, y = 600; Robo.mouseMove(x,y);
Und jetzt Kombinieren wir das ganze mit unseren Maustasten gedrücke =) Vorher müsst ihr aber wieder mal was importieren um die Maustasten nutzen zu können:
Code:
import java.awt.event.InputEvent; import java.awt.event.MouseEvent;
Code:
Robo.mouseMove(100,300); Robo.mousePress( InputEvent.BUTTON3_MASK ); Robo.mouseRelease(InputEvent.BUTTON3_MASK );
4.2 Die Tastatur
Das gleiche wie mit der Maus können wir auch mit der Tastatur anstellen, nur das wir hier auch mehrere Tasten gleichzeitig drücken lassen können um zum Beispiel ein Alt + F4 drücken zu lassen.
Für die Tastatur verwenden wir folgende Methoden:
Code:
Robo.keyPress(keycode); Robo.keyRelease(keycode);
Ein einfaches Beispiel:
Code:
Robo.keyPress(KeyEvent.VK_V); Robo.keyRelease(KeyEvent.VK_V);
Dies kann man unendlich oft wiederholen lassen mit einer while schleife, oder einfach in dem man die Events hintereinander wiederholt:
Code:
Robo.keyPress(KeyEvent.VK_H); Robo.keyRelease(KeyEvent.VK_H); Robo.keyPress(KeyEvent.VK_a); Robo.keyRelease(KeyEvent.VK_a); Robo.keyPress(KeyEvent.VK_l); Robo.keyRelease(KeyEvent.VK_l); Robo.keyPress(KeyEvent.VK_l); Robo.keyRelease(KeyEvent.VK_l); Robo.keyPress(KeyEvent.VK_o); Robo.keyRelease(KeyEvent.VK_o);
Code:
Robo.keyPress(KeyEvent.VK_ALT); Robo.keyPress(KeyEvent.VK_F4); Robo.keyRelease(KeyEvent.VK_ALT); Robo.keyRelease(KeyEvent.VK_F4);
4.3 Delay
Da wir bis jetzt die Tasten, die Maus und die Pixelabfragen immer gleich beendet haben, haben wir meistens nicht viel davon.
Das beste Beispiel dafür ist falls wir wollen das sich unsere Spielfigur bewegen soll, falls wir
Code:
Robo.keyPress(KeyEvent.VK_w); Robo.keyRelease(KeyEvent.VK_w);
Dafür gibt es die Delay Methode:
Code:
Robo.delay(ms);
Code:
Robo.keyPress(KeyEvent.VK_w); Robo.delay(2000); Robo.keyRelease(KeyEvent.VK_w);
Dies kann man an sich für alles Verwenden.
5. Anmerkung
Ich habe hier nicht alle Methoden gezeigt weil man diese für den Anfang gar nicht braucht, doch die wichtigsten Sachen sind dabei um anzufangen mit der Klasse rumzuspielen, doch dies sind nur die Grundlagen um damit ein Bot schreiben zu können muss man noch viele andere Dinge einsetzen wie Keyevents usw.
Ihr solltet beim Ausprobieren darauf Aufpassen was ihr Codet! Falls ihr auf die Idee kommt sowas wie zu schreiben:
Code:
do
{
Robo.keyPress(KeyEvent.VK_w);
Robo.keyRelease(KeyEvent.VK_w);
}
while(true);
Viel spaß !
mfg
obi