2.ゲームの起動を自動化する
このページの目的
sikulixによるゲーム自動化の手始めとして、ゲームを起動するプログラムを作ります。
- sikulixで操作するために毎回エミュレータからゲームを起動する……、という動作は結構面倒なので、自動化するメリットは大きいです。
- 一時期ハマってたプリンセスコネクトを例に作成。Macを例に作成していますがWIndowsも同様です。
前提
今回自動化する作業
MacからBlueStacksを起動しアプリを立ち上げる。手順は以下の通り。
- 手順①:デスクトップで虫眼鏡マークをクリックしてSpotlightを立ち上げる
- 手順②:Bluestacksを検索、起動
- 手順③:Bluestacksが起動するのを待ってゲームアイコンをクリック
- 手順④:ゲームが起動するのを待って、クリックボタンをクリック
- 手順⑤:データダウンロード画面が表示されれば、OKボタンをクリック
- 手順⑥:お知らせ画面が表示されれば、閉じるをクリック
コードの画像
コードの内容
#手順① click("虫めがねボタン") #虫めがねボタンクリック #手順② type("bluesta") type(Key.ENTER) #手順③ wait("ゲームのアイコン",60) sleep(2) doubleClick("ゲームのアイコン") #手順④ wait("データ連携ボタン",100) click(Pattern("CRIWAREのアイコン").targetOffset(525,-7)) #手順⑤ wait(10) if exists("データダウンロード表示"): click("OKボタン") #手順⑥ sleep(30) if exists("閉じるボタン"): click("閉じるボタン") #手順⑥
コードの作成方法と解説
- 手順①
- click()は指定した画像をデスクトップ上で検索してクリックします。
- 画像のスクショはsikulixの「スクリーンショットを撮る」ボタンから可能
- Spotlightを呼び出したいだけなので、contral+spaceを押す形でもいい。その場合は、type(Key.SPACE, Key.CTRL)
- 画像だとデスクトップの環境に依存するためキーボード操作のほうがスマートかも
- sleep()は数字で指定した秒数待機する。 これを入れないと手順②の入力に失敗することがあったので挿入
- 手順②
- type("")は指定したキーをタイプします
- type(Key.ENTER)はエンターキーを押します
- 手順③・手順④
- wait(画像,秒数)は指定した画像が表示されるまで指定した秒数待機します。
- ここではAndroidのホーム画面で指定したゲームのアイコンが表示されるのを60秒待っています。
- 2秒のsleepを挿入しているのは、アイコンが表示されて直ちにクリックするとうまく起動できなくなる場合があったため
- ゲームアイコンのdoubleClickはclickでも問題ないはずですが、たまにclickで失敗することがあるのでdoubleClickに置き換えています。
- 手順⑤
- if exists():は指定した画像が表示された場合のみ特定のコードを実行します。
- 指定するコードはタブで字下げ(スペースで4文字分字下げ)して記載しています。
- ここではアプリのデータダウンロードがあった場合のみ、OKボタンをクリックしています。
- 手順⑥
- 手順⑤と同じく、if exists():を使ってログイン後にポップアップで画面が表示された場合のみ、OKボタンで閉じるというのを実現しています