日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 谷歌小恐龙自动跳跃

發布時間:2024/1/1 python 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 谷歌小恐龙自动跳跃 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

針對Cent Browser斷網谷歌小恐龍,屏幕1920*1080。 關閉慢速模式。

第一版

僅僅是簡單的檢測像素點,像素點不一樣就會跳躍

大約能到700分左右,因為700分左右會變色,變色過程中由于色差問題,小恐龍可能會不停跳躍或者無視仙人掌。

你可以嘗試更改andx()中的睡眠時間,set_out中的跳躍時間,或者x1,y1的初始值來優化。

from ctypes import * import pyautogui as ui from threading import Thread import keyboard import time# 當進程啟動時如果兩個點不同,就會按下空格 def set_out():global x1, x2, y1, y2, a gdi32 = windll.gdi32user32 = windll.user32# 獲取句柄hdc = user32.GetDC(None)# 獲取指定像素的顏色while a:c1 = gdi32.GetPixel(hdc, x1, y1)c2 = gdi32.GetPixel(hdc, x2, y2)if not c1 == c2:keyboard.press(' ')time.sleep(0.8)keyboard.release(' ')# 該進程每隔一段時間使得監測點右移,適應速度 def andx():global a, x2while (a):time.sleep(1.35)x2 = x2 + 1# 開始按下*號,獲得兩個檢測點, # 鼠標指向小恐龍眼睛按*號 global x1, x2, y1, y2, a keyboard.wait('*') x1, y1 = ui.position() x2 = x1 y2 = y1 - 50 x1 = x1 + 85 y1 = y1 + 30 print(x1, y1, x2, y2) t = Thread(target=set_out) # 進程綁定 t1 = Thread(target=andx) # 進程綁定 a = 1 keyboard.wait('+') t.start() t1.start() keyboard.wait('-') a = 0 t.join() t1.join()

第二版

調整判定,使用兩個檢測區域,測定危險移動速度,再算出危險到小恐龍時間,提前跳躍

from PIL import ImageGrab # 截屏用 import pyautogui as ui # 獲取鼠標位置 from threading import Thread # 進程 import keyboard # 鍵盤監聽 import numpy as np import timedef jump_(wait):# 執行線程,睡眠后按空格time.sleep(wait)keyboard.press(' ')time.sleep(0.2)keyboard.release(' ')def set_out():global x, y, end_l, end_r, atime_r = [] # 經過右端的時間隊列while a:# 獲得一排像素點,二值化,并且轉數組img = ImageGrab.grab(bbox=(end_l, y - 1, end_r, y)).convert('1')img = list(np.array(img)[0])# 開始處理數組,使得危險‘連續’lenimg = len(img)setting = img[0] # 背景顏色t = True # 背景標記避免重復膨脹i = 200 # 循環變量# '膨脹'while i < lenimg:if not img[i] == setting: # 若與背景不同色if t: # 之前是背景j = 1t = False # 遇到不是背景while j < 10: # 將之前10個像素‘膨脹’if not img[i - j] == setting: # 遇到不是背景的break # 結束img[i - j] = img[i]j += 1else: # 遇到背景t = Truei += 1t = True # 背景標記i = 200 # 循環變量# '腐蝕'while i < lenimg: # 針對后2/3像素點if not img[i] == setting: # 若與背景不同色if t: # 之前是背景j = 0t = Falsewhile j < 12 and i < lenimg: # 將其與之后共12個像素‘腐蝕’img[i] = settingj += 1i += 1else: # 遇到背景t = Truei += 1# 數組已經處理,對于中點和最右點區域檢測# 讓危險距離恐龍0.24s時起跳i = lenimg - 70 # 檢測最末尾20個while i < lenimg - 50:if not img[i] == setting: # 如果是危險time_r=time.time() # 獲得經過右監測點的時間breaki += 1i = lenimg - 470 # 檢測中間20個while i < lenimg - 450:if not img[i] == setting: # 如果是危險time_c = time.time() # 獲得經過中間監測點的時間tt = time_c - time_r # 經過兩個監測點的時間差# v=400/tt# t=s/v=250*tt/400=tt * 0.625 到小恐龍的時間# 設定一個線程,睡眠t-0.24s后按空格wait = tt * 0.625 - 0.24if 0.15 < wait < 1.2:jump = Thread(target=lambda st=wait: jump_(st)) # 跳躍線程jump.start()breaki += 1np.set_printoptions(threshold=np.inf) # 輸出不省略 # 開始按下*號,獲得三個檢測點, # 鼠標指向小恐龍眼睛按*號 keyboard.wait('*') x, y = ui.position() print(x, y) end_l = x - 80 centre = x + 400 end_r = centre + 300 y = y + 20 # 小恐龍距離最右邊700像素 t = Thread(target=set_out) # 進程綁定 a = 1 keyboard.wait('+') t.start() print('自動跳越開啟') keyboard.wait('-') a = 0 t.join() print('自動跳越關閉')

寫時意識到,根本不需要膨脹腐蝕,仙人掌十分稀疏,用不著隊列,可能改版了,沒有翼龍,兩個監測點不如直接測速度

第三版

from PIL import ImageGrab # 截屏用 import pyautogui as ui # 獲取鼠標位置 from threading import Thread # 進程 import keyboard # 鍵盤監聽 import numpy as np import timedef jump_(wait):# 執行線程,睡眠后按空格# print(wait)time.sleep(wait)keyboard.press(' ')time.sleep(0.2)keyboard.release(' ')def set_out():global x, y, end_l, end_r, aperil = [] # 危險組 [[位置],[時間],]risk = 0j = 0while a:# time.sleep(0.1)# 獲得一排像素點,二值化,并且轉數組img = ImageGrab.grab(bbox=(end_l, y - 1, end_r, y)).convert('1')img = list(np.array(img)[0])# 開始處理數組,尋找危險位置lenimg = len(img)setting = img[0] # 背景顏色i = 250 # 循環變量# 尋找危險位置while i < lenimg - 50: # 找危險開始點if not img[i] == setting: # 若與背景不同色risk = i # 記錄危險breaki += 1if i == lenimg - 50: # 這一輪沒找到continuei = lenimg - 50 # 循環變量j = 0while i > risk: # 找危險結束點,求出危險近似中點if not img[i] == setting: # 若與背景不同色if i - risk > 120: # 距離差距太大j = 1else:risk = (risk + i) // 2breaki -= 1if j or risk < 300 or risk > lenimg-100:continue# 數組已經處理# 讓危險距離恐龍0.25s時起跳time_1 = time.time() # 得到時間if not len(peril) == 0: # 有上一次的位置# 找到了,且在上一次出現位置的左邊if peril[-1][0] > risk:tt = time_1 - peril[-1][1] # 和上一次的時間差# v = s/tt 速度# t = s'/v = s'*tt/s 到小恐龍的時間# 設定一個線程,睡眠 t-0.25s 后按空格wait = (risk - 80) * tt / (peril[-1][0] - risk) - 0.25if 0 < wait < 1:jump = Thread(target=lambda st=wait: jump_(st)) # 跳躍線程jump.start()elif risk - peril[-1][0] < 50: # 太近continueperil = [[risk, time_1]]np.set_printoptions(threshold=np.inf) # 輸出不省略 # 開始按下*號,獲得三個檢測點, # 鼠標指向小恐龍眼睛按*號 keyboard.wait('*') x, y = ui.position() print(x, y) end_l = x - 80 centre = x + 400 end_r = centre + 300 y = y + 20 # 小恐龍距離最右邊700像素 t = Thread(target=set_out) # 進程綁定 a = 1 keyboard.wait('+') t.start() print('自動跳越開啟') keyboard.wait('-') a = 0 t.join() print('自動跳越關閉')

總之比我手殘分數高(這里小恐龍到最右端像素長約700)屏幕分辨率1920*1080,瀏覽器占右半邊屏幕。屏幕不同可能無法正常躲避。(懶到不想做比例)就測試了1次,5003分。

總結

以上是生活随笔為你收集整理的python 谷歌小恐龙自动跳跃的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。