Python で Android ゲーム を自動操作

Uncategorized
1.9k words

Python を使って アンドロイドのゲームを自動操作する方法を紹介します。

一度作ってしまえば、リセマラの周回とか自動で出来るようになります。

プログラム分からないって人でも出来るように紹介するので、回りくどくてグダグダした説明になってしまうかもしれませんがご了承下さい。

目標

今回出来るようになること

  1. アンドロイドの指定した場所を、自動でタップ。
  2. アンドロイドの画面に、押したいボタンが出たら自動でタップ。

この2点を目標に説明して行きます。

マウスを自動操作するツールとは何が違うの?

Python で アンドロイドゲームを自動操作 する場合、マウスを奪うことがありません。

なので ネットサーフィンや他のPCゲームで遊びながら、アンドロイド実機を自動操作することができます。

NoxPlayer を自動操作することも出来ます。

準備

ちょっと準備が大変ですが、準備させ整えばゲームの自動化ができるので頑張りましょう。

Python

Python

Microsoft Store から簡単にインストール出来ます。

Python

ちゃんとインストール出来たか確認するには?

コマンドプロンプトに下記を入力すると確認できます。

1
python --version

android-auto-play-opencv

OpenCV の画像認識を使って、Android を自動操作するライブラリです。

指定したボタンが出てきたらタップするために使います。

インストール方法

「Win」キーと「R」キーを同時に押して「ファイル名を指定して実行」ダイアログに「cmd」と入力し、コマンドプロンプトを開きます。

で、開いたコマンドプロンプトに 下記コマンド を入力して android-auto-play-opencv をインストールします。

1
pip install android-auto-play-opencv

Successfully と出れば成功です。

Android Debug Bridge(adb)

アンドロイドを操作するために adb.exe を入手します。

adb.exe は、SDK Platform-Tools に含まれているので、それをダウンロードして展開します。

SDK Platform-Tools

公式サイト の Downloads の「Download SDK Platform-Tools for Windows」を押して、

利用規約に同意し、ダウンロードします。

適当なフォルダに展開します。

サンプル集

Android自動操作ライブラリを使ったサンプル集です。無くても問題ないです。

android-auto-play-opencv

https://github.com/noitaro/android-auto-play-opencv

Clone or download の「Download ZIP」でダウンロードします。

適当なフォルダに展開します。

拡張子を表示させる

この設定は必須じゃないですが、今後 Python コードを作成するため見えてると作業がしやすいので、表示させておきましょう。

どこでもいいのでフォルダの 表示 を押して「ファイル名拡張子」にチェックを入れます。

これで準備完了です。

アンドロイド自動操作スクリプト作成

では早速、アンドロイドを操作するスクリプトを作成していきます。

適当なフォルダを作って作業して下さい。今回は展開した「android-auto-play-opencv-master」フォルダ内で作業します。

フォルダ内を右クリックし、新規作成の「テキストドキュメント」選択します。

ファイル名を「Main.py」に変更します。

拡張子も「txt」から「py」に変更するので、確認ダイアログが出ます。

「はい」を押してファイル名を確定しましょう。

こんな感じになればOK。

次に先程作った「Main.py」をテキストエディッタで開きます。

「Main.py」を選択した状態で右クリックをし「プログラムから開く」を選択します。

ファイルを開く方法で「その他のアプリ」を選びます。

メモ帳 を選択してから「OK」ボタンを押します。

これで「Main.py」を メモ帳 で開く事ができました。

中身は空っぽですけどね。

メモ帳じゃなくても、普段使い慣れているテキストエディッタでも大丈夫です。

雛形をコピペする

Python の雛形をコピーして貼り付けます。

1
2
3
4
5
6
7
8
9
10
11
# This Python file uses the following encoding: utf-8
# pip install android-auto-play-opencv
import android_auto_play_opencv as am
adbpath = '..\\platform-tools\\'
def main():
aapo = am.AapoManager(adbpath)
while True:
# 画面キャプチャ
aapo.screencap()
if __name__ == '__main__':
main()

Python は インデント が重要なので、コピペ時に空白を削除しないようにしましょう。あと、先頭のコメントも重要!

これで、USB接続した アンドロイド実機の画面を、スクリーンショット して PCへ転送してくれます。

動作確認

とりあえず、動くか動作確認をします。

「android-auto-play-opencv-master」フォルダのアドレスバーに「cmd」と入力しエンターキーを押し、コマンドプロンプトを開きます。

開いたコマンドプロンプトに下記コマンドを入力すると Python を実行することが出来ます。

1
python ./Main.py

「アンドロイド端末が接続されていません。」と出れば成功です。Python が正しく機能しています。

アンドロイド実機を接続して動作確認

次に、アンドロイド実機を PC と USB接続して動作確認してみます。

PC と USB接続してから先程と同じように「Main.py」と入力し、エンターキーを押します。

ひたすら 画面キャプチャ と表示されれば成功です。

一瞬で閉じてしまう場合は?

USBモードを メディアデバイス にする。

USBモードは メディアデバイス

それでも駄目な場合は、アンドロイド実機の USBデバッグ が無効になっているかもしれません。

USBデバッグ を有効にする方法

まず、設定 > デバイス情報 > ビルド番号 を 7回タップして 開発者向けオプション を有効にします。

開発者向けオプションを有効にする

開発者向けオプション 内の USB デバッグ を有効にします。

USB デバッグを有効にする

そうすると「USB デバッグを許可しますか?」と表示されるので「常に許可する」にチェックを入れて「OK」して下さい。

USB デバッグを許可しますか?

アンドロイド自動操作スクリプト改造

動作確認が出来たら、Python スクリプトを改造します。

「Main_sample.py」を見て改造するのもいいかもしれません。

今は 画面キャプチャしかしていないので、画面内で見つけたボタンをタップするように改造します。

まず、template フォルダに元となる画像を入れます。

で、下記のようにファイル名を指定すると、その場所をタップしてくれます。

1
aapo.touchImg('./template/stage_clear.png')

Python を書く時は、インデントに気をつけましょう。

リファレンス

全ての関数は こちら に記載してあります。

NoxPlayer を自動操作する

adbpath を変えることで、NoxPlayer を操作することも出来ます。

1
adbpath = '..\\platform-tools\\'

NoxPlayer を操作するには、NoxPlayer用の adb.exe を指定します。

NoxPlayer用の adb.exe の調べ方

デスクトップにある NoxPlayerのショートカットを右クリックして「ファイルの場所を開く」を選択

開かれたフォルダに NoxPlayer用の adb.exe があります。なので、そのフォルダパスを adbpath に指定すればOK

Python は エンマークがエスケープ文字に設定されているので、エンマークを使いたい時は2回続けて書く必要があります。

1
2
adbpath = 'D:\Program Files\Nox64\bin\' # NG
adbpath = 'D:\\Program Files\\Nox64\\bin\\' # OK

おわりに

これを使えば イベントの周回とかリセマラの周回とかが自動操作できるようになります。

アンドロイド実機やNoxPlayer でマウスを奪われることもないのでストレスもありません。

敷居が高そうに見えますが、楽をするために頑張ってみるのもいいものですよ。

新しい自動操作ツールを作りました

新しくアンドロイド自動操作ツールを作りました。

https://noitaro.github.io/android-automation-tool/