PythonでiPhoneゲーム『2048』で高得点を自動で叩き出してみた。
こんばんは。3連休なので、今日もまたPythonでやっていきます。
毎週何かしらの自動化プログラムを作るのが趣味になりつつあります。
余談は置いておき、
スクレイピングを学ぶとこんなことまでできるのか〜!と感動したので
ご紹介。
何ができるのかというと、
このゲームで、
高得点を取って、
Twitterでドヤってやろうじゃないかってことです。
要するに、
タイルずらしゲームを自動でやらせて、
最速でランキング1位を取ってドヤろう!
誇張が入っておりますが、、
割と、バカにできません。
自動化は人間技を超えますからね。
ちなみに、酔った状態でやった結果が下記。
3分くらい?ですかね。
これがどれくらい得点を上げられるでしょうか?
これがどれくらい短くできるでしょうか?
参考にしたのは、
名著です。
上司にドヤりたい部下の方。
同期に圧倒的なスキル差をつけたい方。
新人にチヤホヤされたい方。
部長に頼りにされた若手の方。
飲み会1回分ですね。どうぞ。
逆に、周りに置いてかれたい方は、絶対に買わないで。
<事前にインストールする外部ライブラリ>
-selenium 3.141.0
-chromedriver(使用ブラウザがchromeの場合)
chromedriverのインストールは2通りあります。癖があるのでご注意を。
1.バイナリを直接ダウンロードしてコード内でパスの場所を指定してあげる。(注意:importは不要)←今回はこっちを採用
2.pip install chromedriver_binaryして、import chromedriver_binaryしてあげる。
環境変数のPATHを指定する方法もあるようです。
早速コードを。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Chrome("/Users/<あなたの名前>/Desktop/PythonProject/venv/lib/python3.8/site-packages/chromedriver")
browser.get("https://play2048.co/")
html_elem= browser.find_element_by_tag_name("html")
score_before=0
#selector="body > div.container > div.game-container > div.game-message.game-over > p"
tokuten="body > div.container > div.heading > div > div.score-container"
spam=0
while spam <100:
#counter clockwise
# html_elem.send_keys(Keys.DOWN)
# html_elem.send_keys(Keys.RIGHT)
# html_elem.send_keys(Keys.UP)
# html_elem.send_keys(Keys.LEFT)
#clockwise
html_elem.send_keys(Keys.UP)
html_elem.send_keys(Keys.RIGHT)
html_elem.send_keys(Keys.DOWN)
html_elem.send_keys(Keys.LEFT)
time.sleep(1)
spam=spam+1
# if browser.find_element_by_css_selector(selector):
# break
tensuu_elem = browser.find_element_by_tag_name(tokuten)
score_after = tensuu_elem.text
print(score_after)
if score_before == score_after:
break
score_before = score_after
print("遊びは終わり!")
browser.quit()
私のPC使用環境は、
OS:Mac
Python環境:Python 3.8.3
エディタ:Atom (URL:https://atom.io/)
windows OSの方は下記の記事をご参考下さい。
ChromeDriverがハマると半日くらいエラーと格闘することになるので、
エラーの内容をよくググって調べながらやってみてください。
上のコードの
time.sleep(1)
browser.quit()
この2カ所をコメントアウトして実行してみます。
実行時間は3秒くらいでした笑
3秒で同じくらいですね点数の方は。
時給で言ったら、60倍です。
年収が60倍違うって言ったら、
年収400万サラリーマンと
年収2億4000万円の経営者くらいの差です。
Pythonでこんなこともできるよってことが伝われば幸いです。
ちょっと動画もと思って試しに撮ってみました。
続きはTwitterへ載せますね〜