PS:語言只是載體。思維邏輯才是王道
前天看見了個python的腳本。於是裝python。配置環境變量。裝pip。折騰了一上午,最終裝逼失敗。
於是進入博客園,頂部有篇文章吸引了我 .NET開發一個微信跳一跳輔助程序。於是download下來測試一把。
不過博主的是半自動外掛。需要左鍵點擊小人,右鍵點擊需要跳的點。點了幾十次之后不耐煩了。
那又怎樣?又不開車?又不會裝逼?食屎啦你!
手動玩到了2018。。。
發現
原來還可以通過C#連接安卓發送shell命令進行操控。新姿勢!新姿勢!
通過42樓發現,從圖片中搜索小人。咦?這怎么實現呢?
百度百度百度。。好吧很少用google。。可能我是菜鳥程序員吧
喜出望外。
“圖片像素遍歷”
實現思路
一、找到小人坐標
二、找到要跳的坐標
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。。。。。沒毛病
如何找到小人坐標?
-- 小人顏色固定,取底部rgb掃描像素對比
-- 沒毛病
代碼:
效果:
完美?完美!!
弱水三千只取一瓢。我要最底下那個!!
到此,小人底部坐標取到。是不是很簡單粗暴??
如何找到要跳的坐標?
-- 取到要跳的頂點和最右邊。取頂點的 x 和右邊點的 y 作為要跳的點
-- 怎么取頂點?
-- 從上到下,從左到右,與背景對比,第一個碰到的顏色不一樣的為頂點
-- 不行 背景是漸變的
-- 噗。。。 那把r g b 設置相差10 以上為准吧
if (bpixel.R - pixel.R > 10 || bpixel.R - pixel.R < -10 || bpixel.G - pixel.G > 10 || bpixel.G - pixel.G < -10 || bpixel.B - pixel.B > 10 || bpixel.B - pixel.B < -10)
-- 第一點是右上角那個
-- 像素遍歷從高度*30%的坐標點開始
-- 行是行,有時候與背景色相近識別不到
-- 把 bpixel 設置成當前像素的 y-1 位置的像素 bpixel = MyBitmap.GetPixel(x, y - 1);
-- 嗯 上下對比,背景漸變差異不大,第一個差異大的點就是要跳的頂部,完美
-- 怎么取右邊點呢?
-- 遍歷到頂部以后像素的時候與頂部顏色對比,顏色一致設置紅色,取 x 最大的為最右邊
-- 成功啦 有時候會有bug,多個塊顏色一致的時候,最右邊不是最后要跳的塊
-- 對比右坐標的時候,如果大於150像素 就放棄。
-- 頂部也會有bug,有時候小人頭超過要跳的小方塊,導致計算頂部位置會是小人頭
-- 那就在小人坐標 x 左右30不計入頂部識別
-- 哇塞 !好像沒有什么bug了 ,再加上定時器,或者死循環,或者遞歸就可以實現自動跳轉啦。一會兒就兩千多分啦!
-- 其實取到頂點之后,掃描 y 值相等 顏色一樣的。然后取中間值,會更精准
-- 艹 ! 剛才想啥去了?
-- 慢慢試嘛 。其實別人還有更好的算法。顏色相似的,點集合取平均坐標值, 沒經歷過,總要經歷笨方法。起碼源於自己的思維
祝大家新年快樂
2018 888 !!!
沒想到這么多人看。加個群交流下吧? 企鵝群:170501545。