見出し画像

退屈なことをPythonにやってもらうための演習の回答[11.10.3]

毎度、『退屈なことはPythonにやらせよう』についている演習プロジェクトの自分なりの回答を投げています。

動かすところは特に迷うところは無いと思います。ぐるぐる回しながらずっとキー操作を続ければいいだけですね。

#! python3
# 11.10.3 2048

import os, sys, logging, time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

logging.basicConfig(level=logging.INFO,
    format=' %(asctime)s - %(levelname)s - %(message)s')
#logging.debug('start')

# 2048にアクセス
browser = webdriver.Firefox()
browser.get('http://gabrielecirulli.github.io/2048/')

html_elem = browser.find_element_by_tag_name('html')

# 上右下左のキー入力を繰り返す
i = 0

while True :
    if i % 4 == 0:
        html_elem.send_keys(Keys.ARROW_UP)
    elif i % 4 == 1:
        html_elem.send_keys(Keys.ARROW_RIGHT)
    elif i % 4 == 2:
        html_elem.send_keys(Keys.ARROW_DOWN)
    elif i % 4 == 3:
        html_elem.send_keys(Keys.ARROW_LEFT)

    i += 1

    try:
        end_elem = browser.find_element_by_class_name('game-over')
        break
    except:
        pass

score = browser.find_element_by_class_name('score-container').text
logging.info(score)

終わり方をどうするのかちょっと悩みました。try-except文をこんな風に使ってもよかったのでしょうか…?

あとはゲームオーバーの表記がちょっと取りづらかったというか、2回目以降だと要素の表示/非表示をやっていたので、手動で検証していたときとSeleniumで操作したところでちょっと違ったので少し迷いました。

最後はなんとなくスコアをINFOで投げていますが、printしてもよかったかもしれません。

次でブラウザ操作は終わりですね。ではでは。

この記事が気に入ったらサポートをしてみませんか?