2048游戲您玩過嗎?https://gabrielecirulli.github.io/2048/ 可以在線玩
人的精力總是有限的,不可能沒日沒夜的玩,但機器可以;做一個自動玩2048游戲的小功能,熟悉selenium的使用
分析
2048游戲本質(zhì)就是通過四個方向鍵,來合成數(shù)字,其實過程單一、枯燥(先不關(guān)注人的思考問題),機器就擅長干這事。
使用selenium可以打開瀏覽器,發(fā)送鍵盤指令等一系列操作;
游戲會有g(shù)ame over的時候,selenium發(fā)送四個方向鍵指令是常態(tài),那么解決game over問題就是特殊處理
標簽
1)得分:<div class="score-container">0</div>
2)game over : <div class="game-message"><p>Game over!</p></div>
注:在正常游戲狀態(tài)下,<p>值為空,游戲結(jié)束時顯示Game over!,根據(jù)這個特征來判斷游戲是否結(jié)束
3)try again : <a class="retry-button">Try again</a>
注:當(dāng)游戲結(jié)束時,需找到該按鈕,點擊它重新繼續(xù)開始游戲
環(huán)境
1)windows 7
2)這是一個簡單的功能,直接在python IDLE下編寫
3)使用的是firefox瀏覽器,需要安裝驅(qū)動,可以到這下載(),我是直接放在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) # 每四個方向操作后判斷游戲是否結(jié)束 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') #當(dāng)前得分 print('game over, score is %s' % score.text) print('wait 3 seconds, try again') time.sleep(3) # 游戲結(jié)束后,等待3秒,自動點擊try again重新開始 try_again = bs.find_element_by_class_name('retry-button') try_again.click()
運行
在python IDLE下,調(diào)用play2048()即可,程序自動執(zhí)行的步驟為:
1)打開firefox
2)在當(dāng)前打開的firefox窗口,訪問https://gabrielecirulli.github.io/2048/
3)等待頁面加載完成,開始進行四個方向箭的發(fā)送
4)當(dāng)game over時,自動try again
5)無限循環(huán)步驟3和4
有興趣的可以試一試,還是有點意思的~~
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com