菜单

微信跳一跳python辅助脚本(总结),python脚本

2019年10月4日 - 编程技术
微信跳一跳python辅助脚本(总结),python脚本
  1. 开发环境使用语言:C/C++IDE:VS2010+
  2. 其他三方库EasyX(:
    密码: sfti)
  3. ADB环境变量配置打开adb文件夹,将此路径添加到环境变量中;手机使用数据线连接电脑,并打开USB调试;打开cmd窗口,输入adb devices查看设备是否已连接,如图:图片 1adb
    devices
  4. EasyX安装双击打开安装文件,选择相应的VS版本即可,如图:

    图片 2easyx

  5. 在VS中新建项目vs2017 – 文件 – 新建 – 项目 – Win32控制台应用程序 –
    空项目 – 完成解决方案资源管理器 – 源文件 – 新建项 – 新建main.cpp

微信跳一跳python辅助脚本(总结),python脚本

这段时间微信跳一跳这个游戏非常火爆,但是上分又非常的难,对于程序员来说第一个念头就是通过写一个辅助脚本外挂让上分变的容易,python现在比较火,我们一起来以python语言为基础总结以下各路神仙写的关于跳一跳的辅助脚本,大家在学习的时候主要理解他们的写法思路,对你学习python非常的有帮助。

图片 3

1、**微信跳一跳自动运行python脚本**

注解:思路

核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,

根据两个点的距离乘以一个时间系数获得长按的时间

识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条直线,就从上往下一行一行遍历,

比较颜色(颜色用了一个区间来比较)找到最下面的那一行的所有点,然后求个中点,

求好之后再让 Y 轴坐标减小棋子底盘的一半高度从而得到中心点的坐标

识别棋盘:靠底色和方块的色差来做,从分数之下的位置开始,一行一行扫描,由于圆形的块最顶上是一条线,

方形的上面大概是一个点,所以就用类似识别棋子的做法多识别了几个点求中点,

这时候得到了块中点的 X 轴坐标,这时候假设现在棋子在当前块的中心,

根据一个通过截图获取的固定的角度来推出中点的 Y 坐标

最后:根据两点的坐标算距离乘以系数来获取长按时间(似乎可以直接用 X
轴距离)

2、**分数霸榜! python助你微信跳一跳拿高分**

注解:这个脚本的工作原理

在跳一跳页面截图

计算出初始点和终点的距离

想办法测出距离与按压时间的系数

想办法让手机按压指定的时间

重复1-4

3、**微信跳一跳小游戏python脚本**

原理:配置adb环境变量,在我的电脑–》属性–》高级系统设置–》环境变量–》Path上添加adb.exe所在的路径。

4、**python实现微信跳一跳辅助工具步骤详解**

这是一个关于在PC端模拟的脚本

说明:

1.windows上安装安卓模拟器,安卓版本5.1以上

2.模拟器里下载安装最新的微信6.6.1

3.最好使用python2.7,python3的pyhook包有bug,解决比较麻烦

5、**微信跳一跳python辅助软件思路及图像识别源码解析**

核心思想

获取棋子到下一个方块的中心点的距离

计算触摸屏幕的时间

点击屏幕

计算棋子到下一个方块中心点的距离

使用 adb shell screencap -p 命令获取手机当前屏幕画面

再通过图像上的信息找出棋子的坐标和下一个方块中心点的坐标

然后通过两点间距离公式计算出距离

6、**小米5s微信跳一跳小程序python源码**

本次脚本是以小米5S这个手机为例子原理和实现方式和以前介绍的差不多。

7、**python3实现跳一跳点击跳跃**

一、整体思路

棋子所在的坐标以及下一步所要到的坐标,根据两个坐标计算出两点之间距离进行跳跃。

二、分布思路

1、根据命令截图获取初始图保存到手机,然后上传到本地文件夹

2、将获取的截图放入新建的坐标轴中(matplotlib)

3、通过鼠标点击事件获取所在初始坐标以及重点坐标,并计算出直线距离

4、进行跳跃,跳跃完成后清空坐标并更新截图

8、**教你用 Python
实现微信跳一跳(Mac+iOS版)**

这是在MAC环境下和IOS系统中用Python实现的脚本。

9、**Python+OpenCV让电脑帮你玩微信跳一跳**

本篇的脚本稍微复杂些,适合进阶的python程序员学习。

以上就是帮客之家为大家整理的关于用python语言在不同操作系统环境下写出微信跳一跳脚本辅助的相关内容,如果你对此很有兴趣,那么学习完以上的内容,你会对python的知识有一个更加深入的了解,通过跳一跳这个小游戏为例子,更多的内容可以举一反三。

这段时间 微信跳一跳
这个游戏非常火爆,但是上分又非常的难,对于程序员来说第一个念头…

  1. 使用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 0;}
    

    运行后打开项目路径检查是否存在screen.png,如图:

    图片 4screen.png

  2. 模拟长按屏幕

    // 在程序中添加以下代码:// 模拟手指按压// 按下坐标,离开坐标,按压时间500mssystem("adb shell input swipe 200 300 205 305 500");
    

    打开微信跳一跳,运行程序,查看是否跳跃

  1. 目的通过截图获取角色位置、待跳的方块位置、以及它们之间的距离,进而计算屏幕按压时间

  2. 为了在程序中处理截图,需要将截图格式转化为jpg,添加部分代码后程序如下:

    #include <stdio.h>#include <windows.h>#include <graphics.h>#include "atlimage.h" // 处理图像格式IMAGE image; // 保存完整截图int main(){ initgraph(1080,1920); // 初始化窗口,与截图大小对应 system("adb shell screencap -p /sdcard/screen.png"); system("adb pull /sdcard/screen.png"); CImage cimage;// 图像格式转换 cimage.Load(L"screen.png"); cimage.Save(L"screen.jpg"); loadimage(&image, L"screen.jpg"); //将截图保存到image变量中 putimage(0, 0, &image); //贴图 // system("adb shell input swipe 200 300 205 305 500"); system; closegraph(); // 关闭图形界面 return 0;}
    

    运行程序,检查窗体是否成功加载截图,如图:

    图片 5运行窗体部分

  3. 由于截图过大,且上下部分均不是游戏有效区域,故对图像进行裁剪,取得必须部分,经计算取得800*700的大小即可:

    #include <stdio.h>#include <windows.h>#include <graphics.h>#include "atlimage.h" // 处理图像格式IMAGE image,img; // 保存完整截图与裁剪后截图int main(){ initgraph; // 初始化窗口 system("adb shell screencap -p /sdcard/screen.png"); system("adb pull /sdcard/screen.png"); CImage cimage; // 图像格式转换 cimage.Load(L"screen.png"); cimage.Save(L"screen.jpg"); loadimage(&image, L"screen.jpg"); //将截图保存到image变量中 SetWorkingImage(&image); // 修改工作区 getimage(&img, 100, 600, 800, 700); // 切割图片 SetWorkingImage; // 恢复工作区 putimage(0, 0, &img); //贴图 // system("adb shell input swipe 200 300 205 305 500"); system; closegraph(); // 关闭图形界面 return 0;}
    

    运行程序,如下:

    图片 6运行窗体

  1. 在获取到游戏区域之后,便可以在此区域中通过颜色找到人物位置与方块位置,而像素代表了颜色,故需要取到每一个像素点:

    DWORD* pMem; //窗口显存int x,y;int xy[800][700]; // 保存img中所有的像素点pMem = GetImageBuffer; //获取窗口的显存SetWorkingImage;for (y = 0; y < 700; y++) for (x = 0; x < 800; x++) xy[x][y] = getpixel; // 获取像素点// 贴图... cleardevice(); // 清除屏幕// 重新贴图for (x = 0; x < 800; x++){ for (y = 0; y < 700; y++) { int b = xy[x][y]&0xff; // 获取低8位 int g = (xy[x][y] >> 8) & 0xff; // 低8位去掉,再取低8位 int r = xy[x][y] >> 16; // 取高16位 pMem[y * 800 + x] = BGR; }}FlushBatchDraw(); // 刷新缓存,显示图形
    

    以上代码可以获取到img中的每一个像素点,并且以像素点重新进行贴图

  2. 在获取到所有点的颜色值之后,便可以开始根据颜色定位人物与跳跃点。从上到下开始逐像素扫描,则大部分情况下(极少数情况在后面处理)会先扫描到跳跃的方块,故以此定位跳跃的方块位置:

    int xx1,yy1; // 方块的顶部坐标SetWorkingImage;for (y = 0; y < 700; y++){ for (x = 0; x < 800; x++) { xy[x][y] = getpixel; // 获取像素点 // 自上而下进行扫描,若扫描到了方块的颜色,则跳出循环,不再获取像素点 if (isNewBlock) // 判断是否是新的盒子 { xx1 = x; yy1 = y; goto next; } }}next: // ...// 判断是否是新的盒子BOOL isNewBlock(int color){}
    
  3. 判断人物的位置,人物的颜色是固定的,故较容易取到。人物分为头和体,从上到下扫描则会扫描到头,那么就从下到上开始扫描:

    int peopleX,peopleY; // 人物坐标next: for (y = 699; y >= 0; y--) // 自下而上开始扫描 { for (x = 0; x < 800; x++) { xy[x][y] = getpixel; // 获取像素点 if (ColorFun(xy[x][y], RGB(55, 60, 100), 10)) //如果颜色是人物的颜色 { peopleX = x; // 获得人物的坐标 peopleY = y; break; } } if (ColorFun(xy[x][y], RGB(55, 60, 100), 10)) break; }// 判断颜色是否相似BOOL ColorFun(COLORREF color1, COLORREF color2, int diff){}
    
  4. 在确定角色、方块的位置后,即可以开始计算距离并跳跃。但刚才所用到的ColorFun()与isNewBlock()还仍未提供实现细节。ColorFun()主要进行颜色相似的判断:

    BOOL ColorFun(COLORREF color1, COLORREF color2, int diff){ // 取两种颜色的R、G、B值 int r1 = GetRValue; int g1 = GetGValue; int b1 = GetBValue; int r2 = GetRValue; int g2 = GetGValue; int b2 = GetBValue; if (sqrt(double* + * + * < diff) { return TRUE; } return FALSE;}/*sqrt(double* + * + *颜色由R、G、B三基色组成,两个颜色值越接近,则其R、G、B值越接近三种基色的颜色差的平方根的值则代表两种颜色的相似度,值越小则越相似该函数的diff参数即为相似度,可以手动指定来确定颜色相似的程度*/
    

    isNewBlock()收集了跳一跳中绝大多数盒子模型的颜色:

    BOOL isNewBlock(int color){ // color为在img中取到的像素 int r = GetRValue; int g = GetGValue; int b = GetBValue; if (colorFun(color, RGB(246, 246, 246), 10))//浅白色 return TRUE; else if (colorFun(color, RGB(250, 250, 250), 10)) return TRUE; else if (colorFun(color, RGB(255, 255, 255), 0))//纯白色 return TRUE; else if (colorFun(color, RGB(100, 148, 106), 20))//墨绿色 return TRUE; else if (colorFun(color, RGB(113, 113, 113), 10))//深灰色 return TRUE; else if (colorFun(color, RGB(245, 128, 58), 10))//橙色 return TRUE; else if (colorFun(color, RGB(186, 239, 69), 10))//浅绿色 return TRUE; else if (colorFun(color, RGB(234, 203, 174), 10))//木质桌子 return TRUE; else if (colorFun(color, RGB(254, 240, 89), 10))//黄色 return TRUE; else if (r > 124 && r < 134 && g>111 && g < 121 && b > 219 && b < 229)//紫色相间 return TRUE; else if (r > 75 && r < 85 && g>158 && g < 165 && b > 85 && b < 95)//大圆绿柱子 return TRUE; else if (colorFun(color, RGB(254, 74, 83), 10))//红色 return TRUE; else if (colorFun(color, RGB(152, 114, 111), 10))//华岩石 return TRUE; else if (colorFun(color, RGB(117, 117, 117), 10))//马桶 return TRUE; else if (colorFun(color, RGB(225, 199, 142), 10)) return TRUE; else if (colorFun(color, RGB(241, 241, 241), 10))//书本 return TRUE; else if (colorFun(color, RGB(255, 172, 178), 10))//粉色盒子 return TRUE; else if (colorFun(color, RGB(73, 73, 73), 3))//奶茶杯子 return TRUE; else if (colorFun(color, RGB(147, 147, 147), 10))//类似唱片机 return TRUE; return FALSE;}
    
  5. 综合以上内容,加入代码:

    IMAGE image; //保存图片IMAGE img; //保存需要的图片,裁剪后int xy[800][700]; //保存img中所有的像素点DWORD* pMem; //窗口显存int x, y;int xx1, yy1; //第一个点的坐标,目标方块顶的坐标int peopleX, peopleY; //人的坐标BOOL isNewBlock(int color);BOOL ColorFun(COLORREF color1, COLORREF color2, int diff);int main(){ initgraph; // 初始化窗口 pMem = GetImageBuffer; //获取窗口的显存 system("adb shell screencap -p /sdcard/screen.png"); system("adb pull /sdcard/screen.png"); CImage cimage;// 图像格式转换 cimage.Load(L"screen.png"); cimage.Save(L"screen.jpg"); loadimage(&image, L"screen.jpg"); //将截图保存到image变量中 SetWorkingImage(&image);// 修改工作区 getimage(&img, 100, 600, 800, 700);// 切割图片 SetWorkingImage; for (y = 0; y < 700; y++) { for (x = 0; x < 800; x++) { xy[x][y] = getpixel; // 获取像素点 if (isNewBlock) // 判断是否是新的盒子 { xx1 = x; yy1 = y; goto next; } } }next: // 获取角色位置 for (y = 699; y >= 0; y--) { for (x = 0; x < 800; x++) { xy[x][y] = getpixel; if (ColorFun(xy[x][y], RGB(55, 60, 100), 10)) { peopleX = x; peopleY = y; break; } } if (ColorFun(xy[x][y], RGB(55, 60, 100), 10)) break; } SetWorkingImage; // 恢复工作区 putimage(0, 0, &img); //贴图 getchar(); cleardevice(); // 清除屏幕 //重新贴图 for (x = 0; x < 800; x++) { for (y = 0; y < 700; y++) { int b = xy[x][y]&0xff; //获取低8位 int g = (xy[x][y] >> 8) & 0xff; //低8位去掉,再取低8位 int r = xy[x][y] >> 16; //取高16位 pMem[y * 800 + x] = BGR; } } FlushBatchDraw(); //刷新缓存,显示图形 // system("adb shell input swipe 200 300 205 305 500"); system; closegraph(); // 关闭图形界面 return 0;}BOOL isNewBlock(int color){}BOOL ColorFun(COLORREF color1, COLORREF color2, int diff){}
    

    运行程序,如图:

    图片 7运行窗体

    角色自下而上进行扫描,方块自上而下进行扫描,在扫描到模型后停止扫描,故中间有一大块是无颜色填充的,这样就能更高效的定位人物和方块。

  1. 在角色和方块定位时都获取到了坐标值,利用这个坐标值进行距离的计算,并根据距离与时间的关系计算长按屏幕的时间。

    // 计算目标跳点int xxx = xx1 + 10;int yyy = yy1 + 95;// 计算距离int distance = sqrt(double((yyy - peopleY)*(yyy - peopleY) + (xxx - peopleX)*(xxx - peopleX)));// 计算时间int time = 1.35 * distance;// 执行跳跃sprintf(str, "adb shell input swipe 200 300 205 305 %d",time);system;
    
  2. 目标点的选定逻辑在定位时获取到了顶部坐标,那么是否需要底部坐标,进而求中心点呢?这么做更精确,但是每次跳跃都会跳到中心,显然辅助被外挂检测机制检测到的概率更大,故选用下图所示逻辑计算跳点:

    图片 8顶点与方块相切如图,以作为方块顶点,各种模型的切点与切线均如图所示,以x和y增加部分偏移量而得出的目标点,对于小方块来说更靠近中间,但是大方块则基本不在中心,这样既考虑了小方块,又避免了外挂检测。程序默认采用(x+10,y+95)进行跳点计算,可根据实际效果进行微调。

  3. 距离的计算距离采用勾股定理进行计算

  4. 时间的计算程序默认采用了1.35为系数进行时间计算,可根据实际效果进行微调。

  5. 此时程序如下:

    IMAGE image; //保存图片IMAGE img; //保存需要的图片,裁剪后int xy[800][700]; //保存img中所有的像素点DWORD* pMem; //窗口显存int x, y;int xx1, yy1; //第一个点的坐标,目标方块顶的坐标int peopleX, peopleY; //人的坐标BOOL isNewBlock(int color);BOOL ColorFun(COLORREF color1, COLORREF color2, int diff);int main(){ initgraph; // 初始化窗口 pMem = GetImageBuffer; //获取窗口的显存 system("adb shell screencap -p /sdcard/screen.png"); system("adb pull /sdcard/screen.png"); CImage cimage;// 图像格式转换 cimage.Load(L"screen.png"); cimage.Save(L"screen.jpg"); loadimage(&image, L"screen.jpg"); //将截图保存到image变量中 SetWorkingImage(&image);// 修改工作区 getimage(&img, 100, 600, 800, 700);// 切割图片 SetWorkingImage; for (y = 0; y < 700; y++) { for (x = 0; x < 800; x++) { xy[x][y] = getpixel; // 获取像素点 if (isNewBlock) // 判断是否是新的盒子 { xx1 = x; yy1 = y; goto next; } } }next: // 人物坐标 for (y = 699; y >= 0; y--) { for (x = 0; x < 800; x++) { xy[x][y] = getpixel; if (ColorFun(xy[x][y], RGB(55, 60, 100), 10)) { peopleX = x; peopleY = y; break; } } if (ColorFun(xy[x][y], RGB(55, 60, 100), 10)) break; } SetWorkingImage; // 恢复工作区 putimage(0, 0, &img); //贴图 getchar(); cleardevice(); // 清除屏幕 //重新贴图 for (x = 0; x < 800; x++) { for (y = 0; y < 700; y++) { int b = xy[x][y]&0xff; //获取低8位 int g = (xy[x][y] >> 8) & 0xff; //低8位去掉,再取低8位 int r = xy[x][y] >> 16; //取高16位 pMem[y * 800 + x] = BGR; } } FlushBatchDraw(); //刷新缓存,显示图形 // 计算目标点 int xxx = xx1 + 10; int yyy = yy1 + 95; int distance = sqrt(double((yyy-peopleY)*(yyy-peopleY)+(xxx-peopleX)*(xxx-peopleX))); int time = 1.35 * distance; sprintf(str, "adb shell input swipe 200 300 205 305 %d", time); system; system; closegraph(); // 关闭图形界面 return 0;}BOOL isNewBlock(int color){}BOOL ColorFun(COLORREF color1, COLORREF color2, int diff){}
    

  1. 在2.4完成之后,运行程序可以实现单步计算和跳跃,若要自动跳跃,则添加循环即可。

  2. 关于图形界面在制作初期,图形界面可以更直观的显示计算与定位过程,但在程序开发结束后,图形显示部分可注释。

  3. 极少数情况无法识别跳跃点在游戏中有一类极少遇到的情况,如下图:

    图片 9方块无法被扫描

    如图,已跳过的方块的纵坐标小于待跳方块的纵坐标,所以会被先扫描到,对于这种情况,采用如下方案解决:先扫描角色,若角色x坐标小于400,则人物在左侧,那么人物左侧的像素就不必再被扫描,若人物在右侧,则人物右侧的内容也不必扫描。

  4. 反检测触摸点:使用随机数选择触摸点,使操作更接近人。程序默认方案为:

    srand((unsigned int)time;// 使触摸点在一个小范围内随机选择touchX = rand() % 80 + 200; // 200-279touchY = rand() % 85 + 300; // 300-384
    

#include <stdio.h>#include <windows.h>#include <graphics.h>#include "atlimage.h"#include <time.h>IMAGE image, img; // 截图图像int coor[800][700]; // 保存截图中所有的像素点int blockX, blockY; // 目标方块顶部坐标int peopleX, peopleY; // 角色的坐标int touchX, touchY; // 模拟按下的坐标int x, y;char str[100];BOOL isNewBlock(int color);BOOL colorFun(COLORREF color1, COLORREF color2, int diff);int main(){ srand((unsigned int)time; while  { // 截图并保存 printf("capturing data and screen:"); system("adb shell screencap -p /sdcard/screen.png"); system("adb pull /sdcard/screen.png"); // 截图格式转换 png -> jpg CImage cimage; cimage.Load(L"screen.png"); cimage.Save(L"screen.jpg"); loadimage(&image, L"screen.jpg"); // 把截图保存到image // 切割图片,取到游戏区,舍弃非游戏区域,加快判断效率 SetWorkingImage(&image); getimage(&img, 100, 600, 800, 700); SetWorkingImage; printf("getting the role and block location...\n"); // 扫描角色坐标,从下往上(从上往下扫描到头部会停止) for (y = 699; y >= 0; y--) { for (x = 0; x < 800; x++) { coor[x][y] = getpixel;// 保存像素点 if (colorFun(coor[x][y], RGB(55, 60, 100), 10)) { peopleX = x; peopleY = y; goto getRole; } } } getRole: // 判断角色在左边还是右边,加快图形判断效率,处理极小形方块的bug for (y = 0; y < 700; y++) { for (x = ((peopleX < 400) ? peopleX + 60 : 0); x < ((peopleX < 400) ? 800 : peopleX - 60); x++) { coor[x][y] = getpixel; // 获取像素点 if (isNewBlock(coor[x][y])) // 判断是否是新的盒子 { blockX = x; blockY = y; goto getBlock; } } } getBlock: printf("calculate jump and touch coordinates...\n"); // 计算目标点 int targetX = blockX + 10; int targetY = blockY + 95; // 根据随机数种子模拟手指按下坐标,防外挂检测 touchX = rand() % 80 + 200; // 200-279 touchY = rand() % 85 + 300; // 300-384 int distance = sqrt(double((targetY - peopleY)*(targetY - peopleY) + (targetX - peopleX)*(targetX - peopleX))); int time = 1.35 * distance; sprintf(str, "adb shell input swipe %d %d %d %d %d", touchX, touchY, touchX + 1, touchY + 1, time); printf("executing:-> touching  for %dms\n", peopleX, peopleY, targetX, targetY, touchX, touchY, time); system; Sleep; } return 0;}// 判断颜色是否相似,diff 越小越相似BOOL colorFun(COLORREF color1, COLORREF color2, int diff){ return sqrt(double((GetRValue - GetRValue*(GetRValue - GetRValue + (GetGValue - GetGValue*(GetGValue - GetGValue + (GetBValue - GetBValue*(GetBValue - GetBValue) < diff;}// 判断是否是新的盒子BOOL isNewBlock(int color){ int r = GetRValue; int g = GetGValue; int b = GetBValue; if (colorFun(color, RGB(246, 246, 246), 10))//浅白色 return TRUE; else if (colorFun(color, RGB(250, 250, 250), 10)) return TRUE; else if (colorFun(color, RGB(255, 255, 255), 0))//纯白色 return TRUE; else if (colorFun(color, RGB(100, 148, 106), 20))//墨绿色 return TRUE; else if (colorFun(color, RGB(113, 113, 113), 10))//深灰色 return TRUE; else if (colorFun(color, RGB(245, 128, 58), 10))//橙色 return TRUE; else if (colorFun(color, RGB(186, 239, 69), 10))//浅绿色 return TRUE; else if (colorFun(color, RGB(234, 203, 174), 10))//木质桌子 return TRUE; else if (colorFun(color, RGB(254, 240, 89), 10))//黄色 return TRUE; else if (r > 124 && r < 134 && g>111 && g < 121 && b > 219 && b < 229)//紫色相间 return TRUE; else if (r > 75 && r < 85 && g>158 && g < 165 && b > 85 && b < 95)//大圆绿柱子 return TRUE; else if (colorFun(color, RGB(254, 74, 83), 10))//红色 return TRUE; else if (colorFun(color, RGB(152, 114, 111), 10))//华岩石 return TRUE; else if (colorFun(color, RGB(117, 117, 117), 10))//马桶 return TRUE; else if (colorFun(color, RGB(225, 199, 142), 10)) return TRUE; else if (colorFun(color, RGB(241, 241, 241), 10))//书本 return TRUE; else if (colorFun(color, RGB(255, 172, 178), 10))//粉色盒子 return TRUE; else if (colorFun(color, RGB(73, 73, 73), 3))//奶茶杯子 return TRUE; else if (colorFun(color, RGB(147, 147, 147), 10))//类似唱片机 return TRUE; return FALSE;}
  1. 安装adb
  2. 配置adb环境变量
  3. 手机使用数据线连接电脑,并打开USB调试
  4. 打开cmd窗口,输入adb devices检测是否已连接
  5. 手机打开微信跳一跳
  6. 运行程序:如下图图片 10程序运行

  1. 对于落地点的调整

    // 计算目标点int targetX = blockX + 10; // 修改 10int targetY = blockY + 95; // 修改 95
    
  2. 对于距离与时间的关系微调

    int time = 1.35 * distance; // 修改 1.35
    
  3. 对于新方块模型的扩充添加到isNewBlock()方法中即可

  4. 程序说明个人学习所用,不做商业传播

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图