ゲーム「Farm Frenzy」用の半自動ボット

こんばんは、Habrの読者! 最近、ある人がブラウザゲームのDiamond Dashのマクロボットを紹介しました。 そして、彼はマクロ言語AutoItを使用してすべてを行いました。 そして、AutoItライブラリを使用してC#で半自動ボットを開発したことを思い出しました。

私が開発したように、以下を参照してください...



仕事に必要なツール





最初にダウンロードしたのはAutoIt( AutoIt Full Installation )で、それをインストールしました。 次に、ライブラリをVisualStudioに追加しました。 理由はわかりませんが、exeファイルをインストールしないとライブラリを使用できませんでした。



はじめに



私のプログラムの本質は、長方形を選択し、そのホットキーを使用してその位置を示し、その中に含まれるフィールドの数を示す必要があることでした。

例:

画像





ホットキー:


ホットキーを使用するために、インターネットにあるクラスを使用しました 。これは、アプリケーションのアクティブなウィンドウだけでなく、非アクティブなウィンドウでもホットキーを使用しました。



私のホットキーコード:



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);








3つのホットキーを取得します。Shift+ Q、Shift + W、Shift + Eで、イベントposition1、position2、position3を実行します。

Shiftだけでなく、Ctrl、Alt、Win、または何も使用できません。



「クリック」のポイントの計算:


クリックしたいグリッドを計算するための位置をプログラムに渡します。



計算コード:



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;

}






パラメータ:







そして、 Shagメソッドで最も興味深いのは、AutoIt MouseClickライブラリからメソッドを呼び出すパラメーターです:







まあ、それは私があなたに示したすべてです。 私のプログラムのソース: ダウンロード



アプリケーションの小さなビデオ:











PS:かつてメリーファームのアプリケーションに費やす時間を減らす方法を考え出すように頼まれた母に感謝しますが、彼女は何も拒否できないので、このプログラムを書きました。 最初は彼女にプログラムの使い方を少し教えなければなりませんでしたが、今では彼女は幸せです。



どうもありがとう。



All Articles