プリコネRの自動化を試みた

#プリコネRの自動化を試みた
プリコネで自動化を試みていたが、ある程度成果が出たので情報を公開する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265588/28376b7d-fd55-bde2-5b04-24faab358fc3.png)

## 結果
https://youtu.be/uVMo5p2o5b4

## 使用したツール
SikuliX
http://sikulix.com/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265588/c7f18614-6231-9d2d-dee2-68730570d70f.png)

## 設定の概要
スクリーンショットを撮り、Pythonに似たコードを書くことで自動化を試みる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265588/3250271a-5010-a9a9-2500-c5388ee2a34b.png)
保存時にコードとスクリーンショットは同一フォルダに格納される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265588/7b7e682f-1a61-7b9f-25d9-72e572d4a811.png)

## ソースコード
```python:pricone.py
#SleepTimeの設定
st = 3

#マナスキップ & 経験値クエスト
def mana_exp_skip():
    click("1571729629965.png")
    sleep(st)
    click("1571729641493.png")
    sleep(st)
    click("1571729676939.png")
    sleep(st)
    click("1571729698045.png")
    sleep(st)
    click("1571729712028.png")
    sleep(st)
    click("1571729735027.png")
    sleep(st)
    click("1571729757050.png")
    sleep(st+7)
    click("1571729831307.png")
    sleep(st)
    click("1571729860301.png")
    sleep(st)
    click("1571729874508.png")
    sleep(st)
    click("1571729899220.png")
    sleep(st)
    click("1571729909252.png")
    sleep(st)
    click("1571729922564.png")
    sleep(st+7)
    click("1571729831307.png")
    sleep(st)

#ギルドハウス受取
def guildskip():
    click("1571730031164.png")
    sleep(st)
    click("1571730053140.png")
    sleep(st)
    click("1571730104342.png")
    sleep(st)

#ダンジョンクエスト(EXTREAM2)
def dungeonskip():
    click("1571730195565.png")
    sleep(st)
    click("1571927756012.png")
    sleep(st)
    click("1571730278445.png")
    sleep(st)
    click("1571730313522.png")
    sleep(st+2)
    click("1571730331597.png")
    sleep(st)
    click("1571730365276.png")
    sleep(st)
    click("1571730447004.png")
    sleep(1)
    click("1571730455612.png")
    sleep(1)
    click("1571730468332.png")
    sleep(1)
    click("1571730477045.png")
    sleep(1)
    click("1571730487308.png")
    sleep(1)
    click("1571730537844.png")
    sleep(st+27)
    click("1571730578595.png")
    sleep(st+4)
    click("1571730607428.png")
    sleep(st+2)
    click("1571730690831.png")
    sleep(st)
    click("1571730365276.png")
    sleep(st)
    click("1571730537844.png")
    sleep(st+27)
    click("1571730578595.png")
    sleep(st+4)
    click("1571730901173.png")
    sleep(st+2)
    click("1571730927485.png")
    sleep(st)
    click("1571730365276.png")
    sleep(st)
    click("1571730537844.png")
    sleep(st+27)
    click("1571730578595.png")
    sleep(st+4)
    click("1571730901173.png")
    sleep(st+2)
    click("1571730960138.png")
    sleep(st)
    click("1571730365276.png")
    sleep(st)
    click("1571730537844.png")
    sleep(40)
    click("1571730578595.png")
    sleep(st+4)
    click("1571730901173.png")
    sleep(st+2)
    click("1571731502063.png")
    sleep(st)
    click("1571731526329.png")
    sleep(st)

#VERY HARD SKIP
def mainquestskip():
    click("1572533939037.png")
    sleep(st)
    click("1571731631151.png")
    sleep(st)
    if exists("1571731661184.png"):
        click("1571731661184.png")
        sleep(st)
    click("1572261257395.png")
    sleep(st)
    click("1571731739366.png")
    click("1571731739366.png")
    sleep(st)
    click("1571731777992.png")
    sleep(st)
    click("1571731802006.png")
    sleep(st+4)
    click("1571731839998.png")
    sleep(st)
    #限定クエストはキャンセル
    if exists("1572353217106.png"):
        click("1571731869070.png")
        sleep(st)
    click("1571731869070.png")
    sleep(st) 

#調査クエスト
def searchquestskip():    
    click("1571730195565.png")
    sleep(st)
    click("1571732056359.png")
    sleep(st)
    click("1571732074597.png")
    sleep(st)
    click("1571732104071.png")
    sleep(st)
    click("1571732134918.png")
    click("1571732134918.png")
    click("1571732134918.png")
    click("1571732134918.png")
    sleep(st)
    click("1571732163559.png")
    sleep(st)
    click("1571732181966.png")
    sleep(9)
    click("1571732207730.png")
    sleep(st)
    click("1571732227983.png")
    sleep(st)
    click("1571732249743.png")
    sleep(st)
    click("1571732134918.png")
    click("1571732134918.png")
    click("1571732134918.png")
    click("1571732134918.png")
    sleep(st)
    click("1571732163559.png")
    sleep(st)
    click("1571732181966.png")
    sleep(st+6)
    click("1571732207730.png")
    sleep(st)
    click("1571732227983.png")
    sleep(st)

#マイページクリック
def myPageClick():
    click("1571732523543.png")
    sleep(st+2)

#メインルーチン
mana_exp_skip()
myPageClick()
guildskip()
myPageClick()
dungeonskip()
myPageClick()
mainquestskip()
myPageClick()
searchquestskip()
myPageClick()
```

## 参考
SikuliXの導入手順（簡易メモ）
https://qiita.com/JINPLAYSGUITAR/items/5bccebec808faf791d4b

SikuliXでソーシャルゲームを自動化する
https://qiita.com/JINPLAYSGUITAR/items/8b85319e0e34e64beb65