Halbautomatischer Bot für das Spiel "Farm Frenzy"

Guten Abend, Leser von Habr! Kürzlich zeigte eine Person einen Makroboter für das Browsergame Diamond Dash, einen Beitrag . Und er hat alles mit der Makrosprache AutoIt gemacht. Und ich erinnerte mich, dass ich mit der AutoIt-Bibliothek einen halbautomatischen Bot in C # entwickelt habe.
Wie ich mich weiterentwickelt habe, siehe unten ...

Notwendige Werkzeuge für die Arbeit


  • VisualStudio 2010 selbst
  • C # Fähigkeiten
  • Und AutoIt-Bibliothek

Als erstes habe ich AutoIt ( AutoIt Full Installation ) heruntergeladen und installiert. Dann fügte er VisualStudio eine Bibliothek hinzu. Ich weiß nicht warum, aber ich konnte die Bibliothek nicht verwenden, ohne die exe-Datei zu installieren.

Erste Schritte


Die Essenz meines Programms bestand darin, dass ich ein Rechteck auswählen und dann seine Tastenkombinationen verwenden musste, um seine Position und auch die Anzahl der darin enthaltenen Felder anzugeben.
Zum Beispiel:
Bild
  • Die Position des Rechtecks ​​ergibt sich aus den Punkten 1.1, 1.n, n.1.
  • Höhe 4
  • Breite 3


Hotkeys:

Um Tastenkombinationen zu verwenden, habe ich eine im Internet gefundene Klasse verwendet , die Tastenkombinationen nicht nur für das aktive, sondern auch für das inaktive Anwendungsfenster verwendet.

Mein Hotkey-Code: Wir erhalten 3 Hotkeys: Shift + Q, Shift + W, Shift + E, die die Ereignisse position1, position2 und position3 ausführen. Sie können nicht nur Shift, sondern auch Strg, Alt, Win oder nichts verwenden.

HotKey[] Key = new HotKey[4];
Key[1] = new HotKey();
Key[2] = new HotKey();
Key[3] = new HotKey();
Key[1].KeyModifier = HotKey.KeyModifiers.Shift;
Key[1].Key = Keys.Q;
Key[1].HotKeyPressed += new KeyEventHandler(position1);
Key[2].KeyModifier = HotKey.KeyModifiers.Shift;
Key[2].Key = Keys.W;
Key[2].HotKeyPressed += new KeyEventHandler(position2);
Key[3].KeyModifier = HotKey.KeyModifiers.Shift;
Key[3].Key = Keys.E;
Key[3].HotKeyPressed += new KeyEventHandler(position3);





Punkteberechnung für einen "Klick":

Wir übergeben dem Programm die Position zur Berechnung des Rasters, auf das Sie klicken möchten.

Berechnungscode: Parameter:

private void button1_Click(object sender, EventArgs e)
{
int shirina = Convert.ToInt32(textBox4.Text);
int Vnax, Vnay, Vx, Vy, Nx, Ny;
Vx = Convert.ToInt32(textBox1.Text);
Vy = Convert.ToInt32(textBox2.Text);
Nx = Convert.ToInt32(textBox3.Text);
Ny = Convert.ToInt32(textBox6.Text);
Vnax = (Convert.ToInt32(textBox7.Text) - Convert.ToInt32(textBox1.Text)) / (shirina - 1);
Vnay = (Convert.ToInt32(textBox2.Text) - Convert.ToInt32(textBox8.Text)) / (shirina - 1);
for (int i = 1; i <= shirina; i++)
{
Shag(Vx, Vy, Nx, Ny);
Vx += Vnax;
Vy -= Vnay;
Nx += Vnax;
Ny -= Vnay;
}
}
private void Shag(int Vx, int Vy, int Nx, int Ny)
{
int vysota = Convert.ToInt32(textBox5.Text);
int nax, nay, x, y;
int nS = 4;
int nCout = 1;
String Str = "left";
nax = (Nx - Vx) / (vysota - 1);
nay = (Ny - Vy) / (vysota - 1);
x = Vx;
y = Vy;
for (int i = 1; i <= vysota; i++)
{
autoIt.MouseClick(Str, x, y, nCout, nS);
x += nax;
y += nay;
}



  • Vx, Vy die oberste Position des Punktes
  • Nx, Ny untere Punktposition


Und das Interessanteste an der Shag- Methode , bei der wir die Methode aus der AutoIt MouseClick- Bibliothek mit ihren Parametern aufrufen :

  • x, y - Punktposition für Klick
  • nS - Bewegungsgeschwindigkeit des Cursors von einem Punkt zum anderen
  • nCout - Anzahl der Klicks
  • Str - welche Schaltfläche zum Klicken, rechts oder links


Nun, das ist alles, was ich dir gezeigt habe. Quellen meines Programms: Download .

Ein kleines Video der Anwendung:



  • Ich weiß nicht, warum der Cursor in der vorherigen Zeile verschwunden ist. beobachtete er war. Gebraucht Camtasia
  • Drücken hängt ein wenig, meine schwache Buche ist schuld daran, dass + Camtasia das System gut belastet hat
  • Die Genauigkeit von Klicks hängt jedoch von der korrekten Bestimmung der Position des Bereichs für das „Klicken“ ab.


PS: Ich bedanke mich bei meiner Mutter, die mich einmal gebeten hat, mir zu überlegen, wie ich weniger Zeit für die Merry Farm-Anwendungen verwenden kann. Da sie jedoch nichts ablehnen kann, habe ich dieses Programm geschrieben. Zuerst musste ich ihr etwas beibringen, wie man das Programm benutzt, aber jetzt ist sie glücklich.

Danke an alle.

Jetzt auch beliebt: