MusicWars用Sikuli IDEブラウザロボット

ポンピングおもちゃ



背景:


どういうわけか、私よりも前の仕事は「キャラクターを盛り上げたいが、仕事のために時間が足りない」ということでした。 すぐに決定しました:「私はエンジニアです。今、問題を解決します。」

Music Warsは、ブラウザベースの新しいMMORPGで、厳しい戦いで音楽の好みのために戦わなければなりません。 非標準の戦闘システムである鮮やかなグラフィックは、悪名高い音楽愛好家だけでなく、コンピューターゲームのすべてのファンをも引き付けます。



Toy MusicWarsを調べたところ、多くのブラウザーゲームと同様に、Flashで作成されているため、完全に操作することはできませんでした。 方法はありますが、スクリプトの使用はGUIプログラミングに重点を置いています。 Gulsomの記事「テスト自動化におけるSikuliの詳細」のおかげで、 sikuliを使用することにしました



この記述の利点は、プログラミングトリックのないビジュアルオブジェクトです。 プログラミングについて多少なりとも理解している人なら誰でも、そのような文章に対処できます。 デバッグを伴うすべての書き込みには、2〜3チェスかかりました。



アップグレードするキャラクター:



ロジック自体は、2つのウィンドウから敵を検索することです。 低いレベルと低いフォースを選択し、存在しない場合は攻撃します。その後、サークル内で敵を退出し、リロードします。



敵を選択するロジック



Regionを使用して要素をより高速に見つけました。 ゲームは画面の半分しか占めていませんでした。



敵を選択するロジック
def left_open_doi(): #  region_left = Region(561,414,386,387) if region_left.exists("aIE.png"): #   if region_left.exists("HAI1ACIh2g.png"): region_left.hover("Cmna.png") if region_left.exists("1404561848539.png"): right_open_boi() else: region_left.click("HAI1ACIh2g.png") if Region(177,250,779,551).exists("1404562400404.png"): Region(177,250,779,551).click("1404562484299.png") sleep(0.23) new_okno_boi() else: if Region(161,175,795,633).exists("Heqocrarouuo.png"): Region(161,175,795,633).click("1404562484299.png") else_none_boi() else: if Region(163,171,797,636).exists("HEAOCTBTOHH0.png"): sleep(100) new_okno_boi() else: sleep(30) close_boi() else: right_open_boi() else: right_open_boi() def right_open_boi(): region_right = Region(175,418,388,381) if region_right.exists("aIE-1.png"): if region_right.exists("HAI1ACIh2g.png"): region_right.hover("Cmna.png") if Region(447,499,96,22).exists("1404561848539.png"): new_okno_boi() else: region_right.click("HAI1ACIh2g.png") if Region(177,250,779,551).exists("1404562400404.png"): Region(177,250,779,551).click("1404562484299.png") sleep(0.23) new_okno_boi() else: if Region(161,175,795,633).exists("Heqocrarouuo.png"): Region(161,175,795,633).click("1404562484299.png") else_none_boi() else: if Region(163,171,797,636).exists("HEAOCTBTOHH0.png"): sleep(100) new_okno_boi() else: sleep(30) close_boi() else: new_okno_boi() else: new_okno_boi() start()
      
      







攻撃後の閉鎖
 def close_boi(): #    if Region(240,250,652,320).exists("QBuxcn.png"): Region(240,250,652,320).click("QBuxcn.png") new_okno_boi() else: click(Location(555,484)) Region(237,253,652,311).click("1404559699899.png") if Region(183,266,767,547).exists("Floanpanrmen.png"): Region(183,266,767,547).click("1404562484299.png") Region(240,250,652,320).click("QBuxcn.png") new_okno_boi() else: sleep(0) Region(183,266,767,547).click("QBuxcn.png") sleep(10) new_okno_boi() #     
      
      







適切な対戦相手がいない場合のウィンドウの変更
 def new_okno_boi(): Region(411,279,155,100).click("1404557642674.png") if Region(177,306,378,486).exists("BUKBAJI.png"): Region(195,412,201,102).click("BUKBAJI.png") sleep(0.10) Region(736,627,220,179).hover("1404582245445.png") sleep(2) Region(192,316,740,474).click(Pattern("1404559393979.png").targetOffset(-55,20)) if Region(181,253,142,41).exists("BVITBA.png"): left_open_doi() else: sleep(0.10) Region(192,316,740,474).click(Pattern("1404559393979.png").targetOffset(-55,20)) Region(175,306,770,489).click("1404547957758.png") left_open_doi() else: if Region(216,326,149,128).exists("DBOPbI.png"): Region(188,310,190,151).click("DBOPbI-1.png") Region(736,627,220,179).hover("1404582245445.png") sleep(2) Region(192,316,740,474).click(Pattern("1404559393979.png").targetOffset(-55,20)) if Region(181,253,142,41).exists("BVITBA.png"): left_open_doi() else: sleep(0.10) Region(192,316,740,474).click(Pattern("1404559393979.png").targetOffset(-55,20)) Region(175,306,770,489).click("1404547957758.png") left_open_doi() else: if Region(376,313,125,121).exists("KOCTEFI.png"): Region(373,313,127,108).click("KOCTEFI-1.png") Region(736,627,220,179).hover("1404582245445.png") sleep(2) Region(192,316,740,474).click(Pattern("1404559393979.png").targetOffset(-55,20)) if Region(181,253,142,41).exists("BVITBA.png"): left_open_doi() else: sleep(0.10) Region(192,316,740,474).click(Pattern("1404559393979.png").targetOffset(-55,20)) Region(175,306,770,489).click("1404547957758.png") left_open_doi()
      
      







Sikuli IDEエディターのスクリプトは次のようになります。


Sikuli IDEエディターのスクリプト



リポジトリへのリンク



次の記事は、そのようなスクリプトを書くように促されたものです。



Gulsom Test Automation Sikuliの 詳細をご覧ください

Facebook Xtragalatticoの 問題を解決するためにSikuliを使用する特別なケース



All Articles