黑松鼠跳一跳辅助

微信跳一跳游戏连跳外挂辅助 跳一跳高分连跳操作攻略微信跳一跳游戏连跳外挂辅助 跳一跳高分连跳操作攻略网络新人百家号微信跳一跳小程序在哪 微信跳一跳怎么玩/加分技巧,来看看微信跳一跳小程序在哪 微信跳一跳怎么玩/加分技巧。微信小游戏进入方式:1、微信6.6.1主界面下拉,弹出菜单中可以在这里看到最近使用过的小程序、小游戏。2、微信的发现标签页、游戏菜单里,也能看到玩过的小游戏。3、在微信“搜一搜”直接搜索小游戏名称,并且能直接看到已加入的好友和他们的成绩。4、用户可通过好友转发,加入一款小游戏进行互动,形成自传播。第一个上线的小游戏叫“跳一跳”,还有欢乐坦克大战、爱消除乐园等。目前,安卓端小游戏在测试少量游戏商品内购,iOS端暂不支持。对于开发者来说,小游戏已提供开发文档和工具,方便开发者先进行开发,可访问微信公众平台官网获取。小游戏开放注册后,开发者可注册并提交小游戏。我们再来看看这个“跳一跳”小游戏,有点像儿时的跳房子,手指长按屏幕“i”形小人就会躬身蓄力,松开后翻转跳跃,从这个“盒子”跳到另一个“盒子”,直到摔下去,然后在排行榜上和好友PK。跳一跳“盒子”的造型丰富多样,魔方、井盖、卷纸、闹钟、表情、红包、便利店、快递等等无所不有。微信跳一跳怎么玩,微信跳一跳游戏怎么得高分,微信跳一跳怎么加分快,跳一跳高分攻略,微信跳一跳高分技巧分享,一起来看看吧。一开始,小编玩了88分就在朋友圈霸榜了,不过没开心几分钟就有朋友直接达到了300多分的战绩。小编都惊呆了,立马再玩了1个小时,依然破不了88分的坎。这小游戏难道还有奥秘?为此,小编特意求教了一下这位高手,他表示:有5个小技巧,至少可以让我多增加30分。1、每一次都调到中间,可以有加成的效果,第一次2分,第二次4分,以此类推。这个想必大部分网友都知道,很容易触发。2、跳到井盖上,停一下,可以加5分哟;3、魔方,这个地方也要停留一下,可以自动加10分;4、便利店,同样停留一下, 自动加15分,里面的门会有动静。本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。网络新人百家号最近更新:简介:关注年轻人的互联网生活方式。作者最新文章相关文章微信跳一跳助手 v1.0
31.6Mv3.1.123.5Mv2.0.20.248.3Mv4.3.320.0Mv3.2.912.3Mv4.7.5.232.3Mv5.5.413Mv3.0.232.3Mv2.8.2
软件介绍软件截图相关下载网友评论下载地址
微信跳一跳助手软件截图
微信跳一跳助手相关版本
微信跳一跳助手多平台下载
版本:v3.2.0大小:13.3M分类:资讯阅读版本:v2.2.1大小:19.7M分类:学习教育版本:v1.6.1大小:16.4M分类:金融理财
微信跳一跳助手相关文章
跳一跳辅助
手机游戏辅助
2.5Mv3.023.8Mv4.8.3973KBv3.116.9Mv3.5.1.72.332.3Mv2.8.26.7Mv7.0.06Mv8.25.19.3Mv1.5.3.3一、开发环境
使用语言:C/C++
IDE:VS2010+
其他三方库
ADB(链接: 密码:v68m)
ADB环境变量配置
打开adb文件夹,将此路径添加到环境变量中;
手机使用数据线连接电脑,并打开USB调试;
打开cmd窗口,输入adb devices查看设备是否已连接,如图:
adb devices
双击打开安装文件,选择相应的VS版本即可,如图:
在VS中新建项目
vs2017 - 文件 - 新建 - 项目 - Win32控制台应用程序 - 空项目 - 完成
解决方案资源管理器 - 源文件 - 新建项 - 新建main.cpp
二、程序开发
2.1 使用adb操作手机
使用adb命令截屏
#include &stdio.h&
#include &windows.h&
#include &graphics.h& //EasyX库
int main()
// 截屏并保存
system("adb shell screencap -p /sdcard/screen.png");
system("adb pull /sdcard/screen.png");
return <span style="color: #;
运行后打开项目路径检查是否存在screen.png,如图:
screen.png
模拟长按屏幕
// 在程序中添加以下代码:
// 模拟手指按压
// 按下坐标(200,300),离开坐标(205,305),按压时间500ms
system("adb shell input swipe 200 300 205 305 500");
打开微信跳一跳,运行程序,查看是否跳跃
2.2 处理截图
通过截图获取角色位置、待跳的方块位置、以及它们之间的距离,进而计算屏幕按压时间
为了在程序中处理截图,需要将截图格式转化为jpg,添加部分代码后程序如下:
#include &stdio.h&
#include &windows.h&
#include &graphics.h&
#include "atlimage.h" // 处理图像格式
IMAGE // 保存完整截图
int main()
initgraph(<span style="color: #80,<span style="color: #20); // 初始化窗口,与截图大小对应
system("adb shell screencap -p /sdcard/screen.png");
system("adb pull /sdcard/screen.png");
CI// 图像格式转换
cimage.Load(L"screen.png");
cimage.Save(L"screen.jpg");
loadimage(&image, L"screen.jpg"); //将截图保存到image变量中
putimage(<span style="color: #, <span style="color: #, &image); //贴图
// system("adb shell input swipe 200 300 205 305 500");
system("pause");
closegraph(); // 关闭图形界面
return <span style="color: #;
运行程序,检查窗体是否成功加载截图,如图:
运行窗体部分
由于截图过大,且上下部分均不是游戏有效区域,故对图像进行裁剪,取得必须部分,经计算取得800*700的大小即可:
#include &stdio.h&
#include &windows.h&
#include &graphics.h&
#include "atlimage.h" // 处理图像格式
IMAGE image, // 保存完整截图与裁剪后截图
int main()
initgraph(<span style="color: #0,<span style="color: #0); // 初始化窗口
system("adb shell screencap -p /sdcard/screen.png");
system("adb pull /sdcard/screen.png");
CI // 图像格式转换
cimage.Load(L"screen.png");
cimage.Save(L"screen.jpg");
loadimage(&image, L"screen.jpg"); //将截图保存到image变量中
SetWorkingImage(&image); // 修改工作区
getimage(&img, <span style="color: #0, <span style="color: #0, <span style="color: #0, <span style="color: #0); // 切割图片
SetWorkingImage(NULL); // 恢复工作区
putimage(<span style="color: #, <span style="color: #, &img); //贴图
// system("adb shell input swipe 200 300 205 305 500");
system("pause");
closegraph(); // 关闭图形界面
return <span style="color: #;
运行程序,如下:
2.3 角色、方块定位
在获取到游戏区域之后,便可以在此区域中通过颜色找到人物位置与方块位置,而像素代表了颜色,故需要取到每一个像素点:
DWORD* pM //窗口显存
int xy[<span style="color: #0][<span style="color: #0]; // 保存img中所有的像素点
pMem = GetImageBuffer(NULL); //获取窗口的显存
SetWorkingImage(&img);
for (y = <span style="color: #; y & <span style="color: #0; y++)
for (x = <span style="color: #; x & <span style="color: #0; x++)
xy[x][y] = getpixel(x, y); // 获取像素点
// 贴图...
cleardevice(); // 清除屏幕
// 重新贴图
for (x = <span style="color: #; x & <span style="color: #0; x++)
for (y = <span style="color: #; y & <span style="color: #0; y++)
int b = xy[x][y]&<span style="color: #xff; // 获取低8位
int g = (xy[x][y] && <span style="color: #) & <span style="color: #xff; // 低8位去掉,再取低8位
int r = xy[x][y] && <span style="color: #; // 取高16位
pMem[y * <span style="color: #0 + x] = BGR(xy[x][y]);
FlushBatchDraw(); // 刷新缓存,显示图形
以上代码可以获取到img中的每一个像素点,并且以像素点重新进行贴图
在获取到所有点的颜色值之后,便可以开始根据颜色定位人物与跳跃点。从上到下开始逐像素扫描,则大部分情况下(极少数情况在后面处理)会先扫描到跳跃的方块,故以此定位跳跃的方块位置:
int xx1,yy1; // 方块的顶部坐标
SetWorkingImage(&img);
for (y = <span style="color: #; y & <span style="color: #0; y++)
for (x = <span style="color: #; x & <span style="color: #0; x++)
xy[x][y] = getpixel(x, y); // 获取像素点
// 自上而下进行扫描,若扫描到了方块的颜色,则跳出循环,不再获取像素点
if (isNewBlock(xy[x][y])) // 判断是否是新的盒子
next: // ...
// 判断是否是新的盒子
BOOL isNewBlock(int color){}
判断人物的位置,人物的颜色是固定的,故较容易取到。人物分为头和体,从上到下扫描则会扫描到头,那么就从下到上开始扫描:
int peopleX,peopleY; // 人物坐标
for (y = <span style="color: #9; y &= <span style="color: #; y--) // 自下而上开始扫描
for (x = <span style="color: #; x & <span style="color: #0; x++)
xy[x][y] = getpixel(x, y); // 获取像素点
if (ColorFun(xy[x][y], RGB(<span style="color: #, <span style="color: #, <span style="color: #0), <span style="color: #)) //如果颜色是人物的颜色
peopleX = // 获得人物的坐标
if (ColorFun(xy[x][y], RGB(<span style="color: #, <span style="color: #, <span style="color: #0), <span style="color: #))
// 判断颜色是否相似
BOOL ColorFun(COLORREF color1, COLORREF color2, int diff){}
在确定角色、方块的位置后,即可以开始计算距离并跳跃。但刚才所用到的ColorFun()与isNewBlock()还仍未提供实现细节。
ColorFun()主要进行颜色相似的判断:
BOOL ColorFun(COLORREF color1, COLORREF color2, int diff)
// 取两种颜色的R、G、B值
int r1 = GetRValue(color1);
int g1 = GetGValue(color1);
int b1 = GetBValue(color1);
int r2 = GetRValue(color2);
int g2 = GetGValue(color2);
int b2 = GetBValue(color2);
if (sqrt(double((r2-r1)*(r2-r1) + (g2-g1)*(g2-g1) + (b2-b1)*(b2-b1))) & diff)
return TRUE;
return FALSE;
sqrt(double((r2-r1)*(r2-r1) + (g2-g1)*(g2-g1) + (b2-b1)*(b2-b1))
颜色由R、G、B三基色组成,两个颜色值越接近,则其R、G、B值越接近
三种基色的颜色差的平方根的值则代表两种颜色的相似度,值越小则越相似
该函数的diff参数即为相似度,可以手动指定来确定颜色相似的程度
isNewBlock()收集了跳一跳中绝大多数盒子模型的颜色:
BOOL isNewBlock(int color)
// color为在img中取到的像素
int r = GetRValue(color);
int g = GetGValue(color);
int b = GetBValue(color);
if (colorFun(color, RGB(<span style="color: #6, <span style="color: #6, <span style="color: #6), <span style="color: #))//浅白色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #0, <span style="color: #0, <span style="color: #0), <span style="color: #))
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #5, <span style="color: #5), <span style="color: #))//纯白色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #0, <span style="color: #8, <span style="color: #6), <span style="color: #))//墨绿色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #3, <span style="color: #3, <span style="color: #3), <span style="color: #))//深灰色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #8, <span style="color: #), <span style="color: #))//橙色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #6, <span style="color: #9, <span style="color: #), <span style="color: #))//浅绿色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #4, <span style="color: #3, <span style="color: #4), <span style="color: #))//木质桌子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #4, <span style="color: #0, <span style="color: #), <span style="color: #))//黄色
return TRUE;
else if (r & <span style="color: #4 && r & <span style="color: #4 && g&<span style="color: #1 && g & <span style="color: #1 && b & <span style="color: #9 && b & <span style="color: #9)//紫色相间
return TRUE;
else if (r & <span style="color: # && r & <span style="color: # && g&<span style="color: #8 && g & <span style="color: #5 && b & <span style="color: # && b & <span style="color: #)//大圆绿柱子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #4, <span style="color: #, <span style="color: #), <span style="color: #))//红色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #2, <span style="color: #4, <span style="color: #1), <span style="color: #))//华岩石
return TRUE;
else if (colorFun(color, RGB(<span style="color: #7, <span style="color: #7, <span style="color: #7), <span style="color: #))//马桶
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #9, <span style="color: #2), <span style="color: #))
return TRUE;
else if (colorFun(color, RGB(<span style="color: #1, <span style="color: #1, <span style="color: #1), <span style="color: #))//书本
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #2, <span style="color: #8), <span style="color: #))//粉色盒子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #, <span style="color: #, <span style="color: #), <span style="color: #))//奶茶杯子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #7, <span style="color: #7, <span style="color: #7), <span style="color: #))//类似唱片机
return TRUE;
return FALSE;
综合以上内容,加入代码:
IMAGE //保存图片
IMAGE //保存需要的图片,裁剪后
int xy[<span style="color: #0][<span style="color: #0]; //保存img中所有的像素点
DWORD* pM //窗口显存
int xx1, yy1; //第一个点的坐标,目标方块顶的坐标
int peopleX, peopleY; //人的坐标
BOOL isNewBlock(int color);
BOOL ColorFun(COLORREF color1, COLORREF color2, int diff);
int main()
initgraph(<span style="color: #0, <span style="color: #0); // 初始化窗口
pMem = GetImageBuffer(NULL); //获取窗口的显存
system("adb shell screencap -p /sdcard/screen.png");
system("adb pull /sdcard/screen.png");
CI// 图像格式转换
cimage.Load(L"screen.png");
cimage.Save(L"screen.jpg");
loadimage(&image, L"screen.jpg"); //将截图保存到image变量中
SetWorkingImage(&image);// 修改工作区
getimage(&img, <span style="color: #0, <span style="color: #0, <span style="color: #0, <span style="color: #0);// 切割图片
SetWorkingImage(&img);
for (y = <span style="color: #; y & <span style="color: #0; y++)
for (x = <span style="color: #; x & <span style="color: #0; x++)
xy[x][y] = getpixel(x, y); // 获取像素点
if (isNewBlock(xy[x][y])) // 判断是否是新的盒子
// 获取角色位置
for (y = <span style="color: #9; y &= <span style="color: #; y--)
for (x = <span style="color: #; x & <span style="color: #0; x++)
xy[x][y] = getpixel(x, y);
if (ColorFun(xy[x][y], RGB(<span style="color: #, <span style="color: #, <span style="color: #0), <span style="color: #))
if (ColorFun(xy[x][y], RGB(<span style="color: #, <span style="color: #, <span style="color: #0), <span style="color: #))
SetWorkingImage(NULL); // 恢复工作区
putimage(<span style="color: #, <span style="color: #, &img); //贴图
getchar();
cleardevice(); // 清除屏幕
//重新贴图
for (x = <span style="color: #; x & <span style="color: #0; x++)
for (y = <span style="color: #; y & <span style="color: #0; y++)
int b = xy[x][y]&<span style="color: #xff; //获取低8位
int g = (xy[x][y] && <span style="color: #) & <span style="color: #xff; //低8位去掉,再取低8位
int r = xy[x][y] && <span style="color: #; //取高16位
pMem[y * <span style="color: #0 + x] = BGR(xy[x][y]);
FlushBatchDraw(); //刷新缓存,显示图形
// system("adb shell input swipe 200 300 205 305 500");
system("pause");
closegraph(); // 关闭图形界面
return <span style="color: #;
BOOL isNewBlock(int color){}
BOOL ColorFun(COLORREF color1, COLORREF color2, int diff){}
运行程序,如图:
角色自下而上进行扫描,方块自上而下进行扫描,在扫描到模型后停止扫描,故中间有一大块是无颜色填充的,这样就能更高效的定位人物和方块。
2.4 计算和跳跃
在角色和方块定位时都获取到了坐标值,利用这个坐标值进行距离的计算,并根据距离与时间的关系计算长按屏幕的时间。
// 计算目标跳点
int xxx = xx1 + <span style="color: #;
int yyy = yy1 + <span style="color: #;
// 计算距离
int distance = sqrt(double((yyy - peopleY)*(yyy - peopleY) +
(xxx - peopleX)*(xxx - peopleX)));
// 计算时间
int time = <span style="color: #.35 *
// 执行跳跃
sprintf(str, "adb shell input swipe 200 300 205 305 %d",time);
system(str);
目标点的选定逻辑
在定位时获取到了顶部坐标(xx1,yy1),那么是否需要底部坐标,进而求中心点呢?这么做更精确,但是每次跳跃都会跳到中心,显然辅助被外挂检测机制检测到的概率更大,故选用下图所示逻辑计算跳点:
顶点与方块相切
如图,以(x,y)作为方块顶点,各种模型的切点与切线均如图所示,以x和y增加部分偏移量而得出的目标点(绿线),对于小方块来说更靠近中间,但是大方块则基本不在中心,这样既考虑了小方块,又避免了外挂检测。程序默认采用(x+10,y+95)进行跳点计算,可根据实际效果进行微调。
距离的计算
距离采用勾股定理进行计算
时间的计算
程序默认采用了1.35为系数进行时间计算,可根据实际效果进行微调。
此时程序如下:
IMAGE //保存图片
IMAGE //保存需要的图片,裁剪后
int xy[<span style="color: #0][<span style="color: #0]; //保存img中所有的像素点
DWORD* pM //窗口显存
int xx1, yy1; //第一个点的坐标,目标方块顶的坐标
int peopleX, peopleY; //人的坐标
BOOL isNewBlock(int color);
BOOL ColorFun(COLORREF color1, COLORREF color2, int diff);
int main()
initgraph(<span style="color: #0, <span style="color: #0); // 初始化窗口
pMem = GetImageBuffer(NULL); //获取窗口的显存
system("adb shell screencap -p /sdcard/screen.png");
system("adb pull /sdcard/screen.png");
CI// 图像格式转换
cimage.Load(L"screen.png");
cimage.Save(L"screen.jpg");
loadimage(&image, L"screen.jpg"); //将截图保存到image变量中
SetWorkingImage(&image);// 修改工作区
getimage(&img, <span style="color: #0, <span style="color: #0, <span style="color: #0, <span style="color: #0);// 切割图片
SetWorkingImage(&img);
for (y = <span style="color: #; y & <span style="color: #0; y++)
for (x = <span style="color: #; x & <span style="color: #0; x++)
xy[x][y] = getpixel(x, y); // 获取像素点
if (isNewBlock(xy[x][y])) // 判断是否是新的盒子
// 人物坐标
for (y = <span style="color: #9; y &= <span style="color: #; y--)
for (x = <span style="color: #; x & <span style="color: #0; x++)
xy[x][y] = getpixel(x, y);
if (ColorFun(xy[x][y], RGB(<span style="color: #, <span style="color: #, <span style="color: #0), <span style="color: #))
if (ColorFun(xy[x][y], RGB(<span style="color: #, <span style="color: #, <span style="color: #0), <span style="color: #))
SetWorkingImage(NULL); // 恢复工作区
putimage(<span style="color: #, <span style="color: #, &img); //贴图
getchar();
cleardevice(); // 清除屏幕
//重新贴图
for (x = <span style="color: #; x & <span style="color: #0; x++)
for (y = <span style="color: #; y & <span style="color: #0; y++)
int b = xy[x][y]&<span style="color: #xff; //获取低8位
int g = (xy[x][y] && <span style="color: #) & <span style="color: #xff; //低8位去掉,再取低8位
int r = xy[x][y] && <span style="color: #; //取高16位
pMem[y * <span style="color: #0 + x] = BGR(xy[x][y]);
FlushBatchDraw(); //刷新缓存,显示图形
// 计算目标点
int xxx = xx1 + <span style="color: #;
int yyy = yy1 + <span style="color: #;
int distance = sqrt(double((yyy-peopleY)*(yyy-peopleY)+(xxx-peopleX)*(xxx-peopleX)));
int time = <span style="color: #.35 *
sprintf(str, "adb shell input swipe 200 300 205 305 %d", time);
system(str);
system("pause");
closegraph(); // 关闭图形界面
return <span style="color: #;
BOOL isNewBlock(int color){}
BOOL ColorFun(COLORREF color1, COLORREF color2, int diff){}
2.5 优化改进
在2.4完成之后,运行程序可以实现单步计算和跳跃,若要自动跳跃,则添加循环即可。
关于图形界面
在制作初期,图形界面可以更直观的显示计算与定位过程,但在程序开发结束后,图形显示部分可注释。
极少数情况无法识别跳跃点
在游戏中有一类极少遇到的情况,如下图:
方块无法被扫描
如图,已跳过的方块的纵坐标小于待跳方块的纵坐标,所以会被先扫描到,对于这种情况,采用如下方案解决:先扫描角色,若角色x坐标小于400,则人物在左侧,那么人物左侧的像素就不必再被扫描,若人物在右侧,则人物右侧的内容也不必扫描。
触摸点:使用随机数选择触摸点,使操作更接近人。程序默认方案为:
srand((unsigned int)time(NULL));
// 使触摸点在一个小范围内随机选择
touchX = rand() % <span style="color: # + <span style="color: #0; // 200-279
touchY = rand() % <span style="color: # + <span style="color: #0; // 300-384
2.6 优化后代码
#include &stdio.h&
#include &windows.h&
#include &graphics.h&
#include "atlimage.h"
#include &time.h&
IMAGE image, // 截图图像
int coor[<span style="color: #0][<span style="color: #0]; // 保存截图(处理后)中所有的像素点
int blockX, blockY; // 目标方块顶部坐标
int peopleX, peopleY; // 角色的坐标
int touchX, touchY; // 模拟按下的坐标
char str[<span style="color: #0];
BOOL isNewBlock(int color);
BOOL colorFun(COLORREF color1, COLORREF color2, int diff);
int main()
srand((unsigned int)time(NULL));
while (<span style="color: #)
// 截图并保存
printf("capturing data and screen:");
system("adb shell screencap -p /sdcard/screen.png");
system("adb pull /sdcard/screen.png");
// 截图格式转换 png -& jpg
cimage.Load(L"screen.png");
cimage.Save(L"screen.jpg");
loadimage(&image, L"screen.jpg"); // 把截图保存到image
// 切割图片,取到游戏区,舍弃非游戏区域,加快判断效率
SetWorkingImage(&image);
getimage(&img, <span style="color: #0, <span style="color: #0, <span style="color: #0, <span style="color: #0);
SetWorkingImage(&img);
printf("getting the role and block location...\n");
// 扫描角色坐标,从下往上(从上往下扫描到头部会停止)
for (y = <span style="color: #9; y &= <span style="color: #; y--)
for (x = <span style="color: #; x & <span style="color: #0; x++)
coor[x][y] = getpixel(x, y);// 保存像素点
if (colorFun(coor[x][y], RGB(<span style="color: #, <span style="color: #, <span style="color: #0), <span style="color: #))
判断角色在左边还是右边,加快图形判断效率,处理极小形方块的bug
for (y = <span style="color: #; y & <span style="color: #0; y++)
for (x = ((peopleX & <span style="color: #0) ? peopleX + <span style="color: # : <span style="color: #); x & ((peopleX & <span style="color: #0) ? <span style="color: #0 : peopleX - <span style="color: #); x++)
coor[x][y] = getpixel(x, y); // 获取像素点
if (isNewBlock(coor[x][y])) // 判断是否是新的盒子
printf("calculate jump and touch coordinates...\n");
// 计算目标点
int targetX = blockX + <span style="color: #;
int targetY = blockY + <span style="color: #;
// 根据随机数种子模拟手指按下坐标,防外挂检测
touchX = rand() % <span style="color: # + <span style="color: #0; // 200-279
touchY = rand() % <span style="color: # + <span style="color: #0; // 300-384
int distance = sqrt(double((targetY - peopleY)*(targetY - peopleY) + (targetX - peopleX)*(targetX - peopleX)));
int time = <span style="color: #.35 *
sprintf(str, "adb shell input swipe %d %d %d %d %d", touchX, touchY, touchX + <span style="color: #, touchY + <span style="color: #, time);
printf("executing:(%d,%d)-&(%d,%d) touching (%d,%d) for %dms\n", peopleX, peopleY, targetX, targetY, touchX, touchY, time);
system(str);
Sleep(<span style="color: #00);
return <span style="color: #;
// 判断颜色是否相似,diff 越小越相似
BOOL colorFun(COLORREF color1, COLORREF color2, int diff)
return sqrt(double((GetRValue(color2) - GetRValue(color1))*(GetRValue(color2) - GetRValue(color1)) + (GetGValue(color2) - GetGValue(color1))*(GetGValue(color2) - GetGValue(color1)) + (GetBValue(color2) - GetBValue(color1))*(GetBValue(color2) - GetBValue(color1)))) &
// 判断是否是新的盒子
BOOL isNewBlock(int color)
int r = GetRValue(color);
int g = GetGValue(color);
int b = GetBValue(color);
if (colorFun(color, RGB(<span style="color: #6, <span style="color: #6, <span style="color: #6), <span style="color: #))//浅白色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #0, <span style="color: #0, <span style="color: #0), <span style="color: #))
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #5, <span style="color: #5), <span style="color: #))//纯白色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #0, <span style="color: #8, <span style="color: #6), <span style="color: #))//墨绿色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #3, <span style="color: #3, <span style="color: #3), <span style="color: #))//深灰色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #8, <span style="color: #), <span style="color: #))//橙色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #6, <span style="color: #9, <span style="color: #), <span style="color: #))//浅绿色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #4, <span style="color: #3, <span style="color: #4), <span style="color: #))//木质桌子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #4, <span style="color: #0, <span style="color: #), <span style="color: #))//黄色
return TRUE;
else if (r & <span style="color: #4 && r & <span style="color: #4 && g&<span style="color: #1 && g & <span style="color: #1 && b & <span style="color: #9 && b & <span style="color: #9)//紫色相间
return TRUE;
else if (r & <span style="color: # && r & <span style="color: # && g&<span style="color: #8 && g & <span style="color: #5 && b & <span style="color: # && b & <span style="color: #)//大圆绿柱子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #4, <span style="color: #, <span style="color: #), <span style="color: #))//红色
return TRUE;
else if (colorFun(color, RGB(<span style="color: #2, <span style="color: #4, <span style="color: #1), <span style="color: #))//华岩石
return TRUE;
else if (colorFun(color, RGB(<span style="color: #7, <span style="color: #7, <span style="color: #7), <span style="color: #))//马桶
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #9, <span style="color: #2), <span style="color: #))
return TRUE;
else if (colorFun(color, RGB(<span style="color: #1, <span style="color: #1, <span style="color: #1), <span style="color: #))//书本
return TRUE;
else if (colorFun(color, RGB(<span style="color: #5, <span style="color: #2, <span style="color: #8), <span style="color: #))//粉色盒子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #, <span style="color: #, <span style="color: #), <span style="color: #))//奶茶杯子
return TRUE;
else if (colorFun(color, RGB(<span style="color: #7, <span style="color: #7, <span style="color: #7), <span style="color: #))//类似唱片机
return TRUE;
return FALSE;
三、程序运行
3.1 程序运行
配置adb环境变量
手机使用数据线连接电脑,并打开USB调试
打开cmd窗口,输入adb devices检测是否已连接
手机打开微信跳一跳
运行程序:如下图
3.2 程序修改
对于落地点的调整
对于距离与时间的关系微调
int time = 1.35 *
对于新方块模型的扩充
添加到isNewBlock()方法中即可
阅读(...) 评论()

我要回帖

更多关于 微信跳一跳辅助工具 的文章

 

随机推荐