前言css
2048遊戲您玩過嗎?https://gabrielecirulli.github.io/2048/ 能夠在線玩html
人的精力老是有限的,不可能沒日沒夜的玩,但機器能夠;作一個自動玩2048遊戲的小功能,熟悉selenium的使用python
分析git
2048遊戲本質就是經過四個方向鍵,來合成數字,其實過程單1、枯燥(先不關注人的思考問題),機器就擅長幹這事。github
使用selenium能夠打開瀏覽器,發送鍵盤指令等一系列操做;web
遊戲會有game over的時候,selenium發送四個方向鍵指令是常態,那麼解決game over問題就是特殊處理windows
標籤瀏覽器
1)得分:<div class="score-container">0</div>spa
2)game over : <div class="game-message"><p>Game over!</p></div>
firefox
注:在正常遊戲狀態下,<p>值爲空,遊戲結束時顯示Game over!,根據這個特徵來判斷遊戲是否結束
3)try again : <a class="retry-button">Try again</a>
注:當遊戲結束時,需找到該按鈕,點擊它從新繼續開始遊戲
環境
1)windows 7
2)這是一個簡單的功能,直接在python IDLE下編寫
3)使用的是firefox瀏覽器,須要安裝驅動,能夠到這下載(https://github.com/mozilla/geckodriver/releases/),我是直接放在system32下
源代碼
def play2048(): from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # 打開firefox,並訪問2048遊戲界面 bs = webdriver.Firefox() bs.get('https://gabrielecirulli.github.io/2048/') html = bs.find_element_by_tag_name('html') while True: print('send up,right,down,left') html.send_keys(Keys.UP) time.sleep(0.3) html.send_keys(Keys.RIGHT) time.sleep(0.3) html.send_keys(Keys.DOWN) time.sleep(0.3) html.send_keys(Keys.LEFT) time.sleep(0.3) # 每四個方向操做後判斷遊戲是否結束 game_over = bs.find_element_by_css_selector('.game-message>p') if game_over.text == 'Game over!': score = bs.find_element_by_class_name('score-container') #當前得分 print('game over, score is %s' % score.text) print('wait 3 seconds, try again') time.sleep(3) # 遊戲結束後,等待3秒,自動點擊try again從新開始 try_again = bs.find_element_by_class_name('retry-button') try_again.click()
運行
在python IDLE下,調用play2048()便可,程序自動執行的步驟爲:
1)打開firefox
2)在當前打開的firefox窗口,訪問https://gabrielecirulli.github.io/2048/
3)等待頁面加載完成,開始進行四個方向箭的發送
4)當game over時,自動try again
5)無限循環步驟3和4
有興趣的能夠試一試,仍是有點意思的~~