自動玩Chrome瀏覽器的小恐龍游戲
瀏覽:2871 評論:12
開發工具
Python版本:3.6.4
相關模塊:
opencv-python模塊;
numpy模塊;
selenium模塊;
pillow模塊;
以及一些Python自帶的模塊。
關注公眾號:Python學習指南,回復“小恐龍游戲2”獲取源碼
環境搭建
安裝Python并添加到環境變量,pip安裝需要的相關模塊即可。
原理簡介
T-Rex Rush是谷歌瀏覽器里自帶的一個彩蛋小游戲,電腦斷網的時候按下空格鍵就可以觸發。或者直接訪問如下鏈接也可以:
https://chromedino.com/
大概長這個樣子:
玩法很簡單,玩家通過操縱空格鍵來控制小恐龍跳躍或者不跳躍,從而躲避路上的障礙物。當小恐龍不小心撞到障礙物時,游戲結束。
今天我們直接設計一個簡單的策略,就可以輕松實現上萬的跑分:
具體而言,你只需要每次截取小恐龍前面的圖像區域,然后檢測一下是否有障礙物出現就ok了:
具體而言,截取圖像的函數實現如下:
'''screenshot'''def screenshot(self, area):
image_b64 = self.driver.execute_script("canvasRunner = document.getElementById('runner-canvas'); return canvasRunner.toDataURL().substring(22)")
image = Image.open(BytesIO(base64.b64decode(image_b64))).convert('RGB')
image = image.crop(area) return image
根據截圖來生成小恐龍當前需要進行的動作的智能體實現如下:
'''agent'''class Agent(): def __init__(self, bbox_area, **kwargs): self.bbox_area = bbox_area self.bg_color = 255 self.reference_frame = np.full((bbox_area[3]-bbox_area[1], bbox_area[2]-bbox_area[0], 3), self.bg_color) '''return action according to the game frame''' def act(self, frame): action = [1, 0] frame = np.array(frame) if self.bg_color != frame[0][0][0]: self.bg_color = frame[0][0][0] self.reference_frame = np.full((self.bbox_area[3]-self.bbox_area[1], self.bbox_area[2]-self.bbox_area[0], 3), self.bg_color) diff = np.subtract(self.reference_frame, frame).sum() if diff != 0: action = [0, 1] return action
雖然聽起來很簡單,但是實際效果還是蠻不錯的(除了有時候植物連在一起的話判斷會出問題T_T)。
完整源代碼詳見相關文件唄~
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
18
12




















