4
8

More than 1 year has passed since last update.

【自動化】pyautoguiでクリックマクロ 画像を渡してその範囲内でランダム化してクリックしてもらう

Last updated at Posted at 2023-02-09

1.はじめに

 何か悪いことをしたい人のために、記録を残しておきます。

2.必要な知識

 ・Python(ループとか分岐とか使って好きに組める)
 ・pyautoguiのインストール
 ・threadingの使い方とか
 ・Windowsのスクショツールの使い方

3.研究概要?

 5年前ぐらいに挫折したプログラムを再度作り直してみました。
 プログラムの中身を公開するというよりは、作り方のヒントをまとめます。

4.作り方のヒント

あくまでヒントです。組み立ててオリジナルマクロを作ろう!

まずはライブラリのインポート
import pyautogui as pag
import random as rand
import time
import threading
クリックする関数

 引数のiconには何をクリックしたいかを渡すわけです。
 そうすると、保存してある画像を読み込んで、その範囲内でランダムにクリックしてくれます。
 正直、これを動かすだけでもかなり楽しい。

def click(icon):
    Left,Top,Wig,Hei = pag.locateOnScreen("./img/"+icon+".png")
    x=Left + rand.randint(0,Wig)
    y=Top + rand.randint(0,Hei)
    print(icon,"=",x,y)
    #pag.moveTo(x,y)
    pag.click(x, y)
    time.sleep(1)
グローバル変数

 gasと時間を管理したいですね。
 変数が足りなければ追加してもよいですね。

gas = 0
count2 = 0

 他の関数で使うときは、以下の表記が必要になります。

global count2
時間を管理する

 ただのカウントアップですね。実に簡単。

def countup2():
    global count2
    while(1):
        count2 = count2 +1
        time.sleep(1)
↑はスレッドで実行します
thread2 = threading.Thread(target=countup2)
thread2.start()
時間が経過したら処理しましょう
global count2
while(1):
    if(count2>=14400):
        reloadhome() #画面遷移して再度メニューに戻る
        if pag.locateOnScreen("./img/○○.png"): #もしもこの画像が画面上にあったなら
            kakunin()
gasが0なら補給をすると
def hokyu():
    global gas
    click("○○")
    click("○○")
    click("○○")
    click("○○")
    gas=1

5.画像の準備

 windowsに標準搭載されているSnipping Toolというのがおすすめです。
 無題.png

6.おわりに

 足りないところを埋めるパズルみたいになりましたね。
 ifとかwhileとか使ってやってみてください。

 ただ単にclickを動かすだけでも結構楽しいので、ぜひやってみてください。

7.参考文献

【自動化】Pythonでマウスとキーボードを操る
https://qiita.com/konitech913/items/301bb63c8a69c3fcb1bd

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8