5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RPAロボットでソリティアに挑戦してみた

Posted at

#きっかけ
 @RyoMoriseaさんの記事で、挑戦者求む!ソリティアをRPAで自動化させてみた!という面白い記事があったので、それに触発されてやってみることにしました。

#Googleのソリティア
 @RyoMoriseaさんの記事やITMediaの記事では、Microsoftのソリティアを使用しているようですが、私は以前Googleのゲームを自動化していることもあり、Googleのソリティアに挑戦することにします。こっちはブラウザさえあればだれでも遊べます。

 遊び方は簡単。Googleで「Solitaire」と入力するだけ。
image.png

#ルールの確認
 早速自動化……と言いたいところだけど、実は私はソリティアのルールをよく知らなかった。とりあえず遊んでみる。

 ううーん……なんだかよくわからんけど、右端のスペースに1から順番にカードを入れて行けばいいわけだな! とりあえず適当にクリックしてたらクリアできた。適当でもクリア出来るんだから、ロボットにも出来るだろう。たぶん。
image.png

#ロボットの作成
 ほんじゃ早速作って行こう。使うソフトはUiPathだ。このソフトは個人だと無料で使えて、機能も高性能なのでおすすめ。見た目もダークモードだとかっこいい。

image.png

 私の最初の作戦は……「とにかくカードをクリックしまくってクリアする」だ。自分で適当にやってもクリアできたんだから、ブルートフォースアタックでクリア出来ちゃんじゃない? という単純な理由。

 早速クリックアクティビティを配置し、カードを選択すると……おお、カードが一枚一枚認識できる! これは楽勝なのでは……?

image.png

 セレクターを覗いてみると、カードはCanvas要素で出来ているらしい。このidx='52'と記述されている部分がカードの番号なので、この部分を変数化してループで回してやれば、ひたすらカードをクリックしまくるロボットが出来る。

 あっという間にロボット1号が完成した。さあ挑戦だ!
image.png

 おお……いい感じに動いている。動作も軽快で、これは早くも攻略できてしまったか? と思った。思ったのだが……

 結論から言うと、ダメだった。ある程度までゲームが進むと、膠着状態になってしまい、クリア不可能になってしまった。

#ロボットの改良
 ロボット1号は何がダメだったかというと、とにかくどのカードでもクリックしてしまうこと。せっかく右端にカードを送っても、再びそれをクリックしてしまい、場にカードを戻してしまう。また、山札は下にあるカードをクリックしても一番上のカードをめくる仕様になっている。おかげでせっかく1があるのに、読み飛ばしてしまった。

image.png

 結局クリアするには、右端のスペース以外のカードで、表になっているカードを認識してクリックするしかないという結論に至った。

 どうやって認識するか? それは……この小さいスペースを画像認識するのだ。
image.png

 ついでに余計な場所をクリックしないように、画面上でスコープを設定した。これで右のスペースのカードをクリックすることもない。

image.png

 表のカードを全部検出すると、次は山札をクリックするようにする。これは非常にシンプル。表のカードをクリックして、山札をめくるだけ。

image.png

 そして出来上がったロボットがコレ。上の二つのシーケンスを無限ループに放り込んだだけ。それじゃあ早速動かしてみよう。
image.png

#二回目の挑戦
 ロボットを起動させると……いい感じに動いている。
image.png

 そしてロボットを放置して掃除しながら待つこと15分。ロボットがソリティアをクリアした! やったぞ!

image.png

 その後も何度か動かしてみたが、上手くいくこともあれば上手くいかないこともあった。5分くらいでクリアすることもあれば、いくら待ってもクリアできないこともある。こればっかりはカードの組み合わせというものだろう。

 これ以上ロボットを改良するとなると……カードの数値と記号をOCRで読み取るか、画像マッチングで数値と記号を判別するしかないと思う。ちょっとやってみたが、私には果てしない道に思えた。今回はこれくらいで勘弁してもらいたい。

#ロボットで攻略するゲーム募集
 何回かやってみて思ったが、RPAでゲームを攻略するのは結構楽しい。もしこういうゲームを攻略してほしい、というのがあれば、言ってもらえると嬉しいです。

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?