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