国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

淘寶玩個球有輔助嗎 淘寶玩個球介紹

瀏覽:106日期:2023-04-04 08:03:37

淘寶玩個球這個游戲雖然簡單,但是想要玩高分還是很難的,畢竟有好幾億的人和你一起玩游戲,那么問題來了,淘寶玩個球有輔助么?目前來說排名前進的分數還是很高的,想要玩的這個上萬分還是很難的!

淘寶玩個球有輔助嗎 淘寶玩個球介紹

淘寶玩個球輔助有嗎?

淘寶小游戲玩個球自動執行

本文記錄了為實現本游戲的自動執行而做的探索過程

淘寶玩個球有輔助嗎 淘寶玩個球介紹

第一階段: 通過截屏進行判斷

1.1 基本步驟

1) 通過adb shell截屏2) 判斷特定行的藍色和紅色像素數量3) 通過adb shell發送指令

1.1.1 截屏

首先獲得用su獲得root權限(后面的步驟需要) 然后用screencap命令截屏, 圖片放到放到手機SD卡里, 然后通過pull命令將圖片復制到電腦上(d:ss.png)

suadb shell screencap sdcard/#swap/ss.pngadb pull /sdcard/#swap/ss.png d:ss.png

1.1.2 加載圖片, 判斷顏色

最開始使用C語言編寫, 使用altimage.h提供的庫.

CImage類是ATL和MFC共用的一個類,其頭文件為atlimage.h,主要用于圖片文件的打開,顯示與保存。這里需要注意的是,在VS2010和VS2012的MFC編程中,不需要將頭文件包含進來。MFC中要使用CImage類,必須先將頭文件包含進來,可以包含在當前代碼的CPP文件中,也可以包含在所屬類的頭文件中,不過最好還是包含在工程的stdafx.h文件中。CImage總共有39個成員函數。

(百度百科)

首先執行上面的命令, 然后進行圖片的判斷

system(D:input.bat);image.Load(_T(D:ss.png));bool result = check(895, image);

其中check函數定義如下, 判斷第row行紅色像素和藍色像素哪個多一些.

// 返回 false代表藍色, true代表紅色bool check(int row, CImage image) { int blue = 0; int red = 0; for (int i = 0; i 1080; ++i) { COLORREF color = image.GetPixel(i, row); BYTE r = GetRValue(color); BYTE g = GetGValue(color); BYTE b = GetBValue(color);// 當時考慮到方塊表面可以有一些輕微的漸變效果 所以設置了RGB的范圍 后來發現是純色 if (r = 250 g = 94 g = 103 b = 97 b = 103) { red++; } if (r = 50 r = 56 g = 250 b = 250) { blue++; } } return red blue;}

1.1.3 命令發送

使用adb提供的input命令可以模擬觸摸操作(需要root權限)

淘寶玩個球有輔助嗎 淘寶玩個球介紹

沒用root權限直接使用input tap只會顯示一個killed, 手機上沒有任何反應. 獲得root權限之后手機就有反應了, 電腦上沒有任何報錯.

代碼如下, 首先打開一個文件 向里面寫入root授權命令和input命令, 然后將adb shell命令的輸入定向到該文件

ofstream f(D:.input);bool result = check(895, image);f su endl;if (result[i])f input tap 284 1606 endl;elsef input tap 797 1608 endl;system(adb shell D:.input);

1.2 出現的問題及優化

1.2.1 出現的問題

程序根本無法使用! 因為太慢了. root授權需要1s左右, 截屏需要1s左右, tap命令從發出到執行也至少需要1秒左右~

所以我從針對上面的問題進行了如下優化

1.2.2 改用java語言

C++似乎無法獲取到adb命令的輸入流,所以只能講命令寫到文件里,adb執行完這幾條命令就退出了;要執行新的命令必須重啟adb,重啟就意味著要重新進行root授權,極其浪費時間。

Java語言的優勢是不僅可以執行外部程序,還能獲得輸入流輸出流,可以在其它程序執行時向其動態寫入命令(代碼的參考資料)

try {Process mainProcess = Runtime.getRuntime().exec(adb shell);DataOutputStream os = new DataOutputStream(mainProcess.getOutputStream());os.writeBytes(su + );os.flush();//處理錯誤輸出流final BufferedReader brError = new BufferedReader(new InputStreamReader(mainProcess.getErrorStream()));ReaderThread t2 = new ReaderThread(brError, error);t2.start();//處理標準輸出流final BufferedReader br = new BufferedReader(new InputStreamReader(mainProcess.getInputStream()));ReaderThread t1 = new ReaderThread(br, std);t1.start();os.writeBytes(input tap + (797 + random.nextInt(30) - 15) + + (1608 + random.nextInt(30) - 15) + );os.flush();} catch (IOException e) {e.printStackTrace();}

改用Java語言之后, 原來的圖像處理庫就不能用了。經過搜索發現java提供圖片讀取的處理的功能。

import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;Process captureProcess = Runtime.getRuntime().exec(captureCommand);// TRYcaptureProcess.waitFor(); // 等待截圖完成File f = new File(D:ss.png);BufferedImage image = ImageIO.read(f);result = handle(image, 815);// CATCH// 省略

判斷函數如下, 讀取一行像素緩存到數組中, 然后判斷這一行有多少個紅色, 多少個藍色

static int[] colors = new int[1080];// 處理圖片 返回true代表紅色public static boolean handle(BufferedImage image, int row) throws Exception {int blue = 0;int red = 0;image.getRGB(0, row, 1080, 1, colors, 0, image.getWidth()); // 獲得第row行像素for (int i = 0; i 1080; ++i) {Color color = new Color(colors[i]);int r = color.getRed();int g = color.getGreen();int b = color.getBlue();if (r = 250 g = 94 g = 103 b = 97 b = 103) red++;if (r = 50 r = 56 g = 250 b = 250) blue++;}if (red 10 blue 10)throw new Exception(異常狀況! blue= + blue + red= + red);return red blue;}

1.2.3 一次判斷多行

從每一張截圖都可以得到4個方塊的顏色, 所以首先想到的是一次輸出4個命令.

bool result[4];result[0] = check(895, image);result[1] = check(815, image);result[2] = check(737, image);result[3] = check(658, image);while (i 4) {if (result[i])// f input swipe 615 1600 615 500 endl;f input tap 284 + rand() % 30 - 15 1606 + rand() % 30 - 15 endl;elsef input tap 797 + rand() % 30 - 15 1608 + rand() % 30 - 15 endl;i++;}

這樣做的結果還是失敗. 設4個方塊為一組, 組內的問題解決了,組之間仍然需要root授權、截屏等漫長的操作。

解決方案是3個方塊為一組. 在剛跳到方塊2, 還沒開始到方塊3的起跳時馬上進行截圖, 并發出命令(要過一會才會真正執行)

淘寶玩個球有輔助嗎 淘寶玩個球介紹

if (firstTime)result[0] = handle(image, 895); // 判斷第一行result[1] = handle(image, 815); // 判斷第二行result[2] = handle(image, 737); // 判斷第三行result[3] = handle(image, 658); // 判斷第四行

1.3 本階段總結

步數越多,小球下落的速度就越快。受限于截圖速度和發送命令的速度,做到這里程序可以實現跳140步。

第二階段: 經過拍照進行判斷

2.1 基本步驟

由于截屏速度太慢, 所以我想對手機屏幕拍照, 然后用照片來判斷, 這樣獲得照片的延遲就很小了.

基本步驟如下

1) 拍照2) 判斷顏色3) 發送命令

2.1.1 拍照

JavaCV是一款開源的視覺處理庫,基于GPLv2協議,對各種常用計算機視覺庫封裝后的一組jar包,封裝了OpenCV、libdc1394、OpenKinect、videoInput和ARToolKitPlus等計算機視覺編程人員常用庫的接口。

OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);grabber.start(); //開始獲取攝像頭數據CanvasFrame canvas = new CanvasFrame(攝像頭);//新建一個窗口canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);canvas.setAlwaysOnTop(true);Frame f = grabber.grab(); // 獲得一幀圖像canvas.showImage(f); // 顯示到窗口中

2.1.2 判斷顏色

經過攝像頭拍照, 方塊的顏色已經不是純色, 外加攝像頭有自動調節色溫和亮度和功能, 游戲背景的變化讓攝像頭不斷進行調節, 導致直接判斷某一塊像素的顏色是否在某個區間已經很不準確了.

淘寶玩個球有輔助嗎 淘寶玩個球介紹

我的方案是將兩個紅色矩形圈住的像素顏色的平均值作為參數(共6個,R1 G1 B1 R2 G2 B2),進行線性分類。

從攝像頭采集大量數據(共8000幀)進行訓練,4種情況 (左藍 右藍 左紅 右紅)各2000幀。使用某人寫的一個fisher線性判別法的分類器(鏈接)求出線性分類器所需的參數

以上就是小編專為大家收集的淘寶玩個球有輔助嗎 淘寶玩個球介紹的相關內容,想了解更多的內容,請繼續關注好吧啦網!

標簽: 淘寶
相關文章:
主站蜘蛛池模板: 亚洲国产日韩在线 | 性生话一级国产片 | 国产高清在线精品一区 | 黄色三级毛片 | 亚洲成在人线中文字幕 | 亚洲综合久久1区2区3区 | 日本特级淫片免费看 | 久久有这有精品在线观看 | 一区二区三区四区在线视频 | 99久久免费看精品国产一区 | 国产精品亚欧美一区二区三区 | 久久中文亚洲国产 | 亚洲第一免费网站 | 日韩美女专区中文字幕 | 正在播放国产一区 | 欧美一区二区三区在线 | 成人高清无遮挡免费视频软件 | 日韩一中文字幕 | 成人a毛片手机免费播放 | 高清国产在线播放成人 | 免费国产成人高清视频网站 | 国产成人免费影片在线观看 | 亚洲国产一区二区三区四区五区 | 香蕉国产人午夜视频在线 | 日日干夜夜爽 | 草久免费视频 | 色网址在线 | 韩国啪啪网站 | 草草影院ccyycom | 嫩草一区二区三区四区乱码 | 午夜免费的国产片在线观看 | 美女与男人对肌免费网站 | 日本加勒比高清一本大道 | 欧美午夜在线 | 欧美成人a大片 | 视频一区 欧美 | 91精品国产91久久久久久 | 欧美国产精品亚洲精品第一区 | 久色视频 | 免费公开视频人人人人人人人 | 久久狠狠一本精品综合网 |