前言
2048遊戲您玩過嗎? https://gabrielecirulli.github.io/2048/ 可以在線上玩
人的精力總是有限的,不可能沒日沒夜的玩,但機器可以;做一個自動玩2048遊戲的小功能,熟悉selenium的使用
分析
# 2048遊戲本質就是透過四個方向鍵,來合成數字,其實過程單一、枯燥(先不關注人的思考問題),機器就擅長做這事。
使用selenium可以開啟瀏覽器,發送鍵盤指令等一系列操作;
遊戲會有game over的時候,selenium發送四個方向鍵指令是常態,那麼解決game over問題就是特殊處理
標籤
1)得分:<div class=" score-container">0div>
2)game over : <#div class="game-message"><p>Game over!p>
註:在正常遊戲狀態下, 值為空,遊戲結束時顯示Game over!,根據這個特徵來判斷遊戲是否結束
3)try again : <a class="retry-button">Try againa>
註:當遊戲結束時,需找到該按鈕,點選它重新繼續開始遊戲
環境
## 1)windows 7
2)這是一個簡單的功能,直接在python IDLE下寫
########################################### 3)使用的是firefox瀏覽器,需要安裝驅動,可以到這下載(),我直接放在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
有興趣的可以試試,還是有點意思的~~
#
以上是如何自動掛機2048遊戲的詳細內容。更多資訊請關注PHP中文網其他相關文章!