在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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。 |
请发表评论