zoukankan      html  css  js  c++  java
  • 王者荣耀刷金币小程序

    前两天让同学帮我上个王者(没办法,自己技术不行),他需要英雄,而我没有金币,买不起(钱多重要!!!),就只好云刷金币,但是我这么懒,哪愿意手动刷呀……所以,就想办法呗。经过长时间的战斗(好像也没有多长),最终完成!

    代码是用C写的:

      1 #include <stdio.h>
      2 #include <windows.h>
      3 #include <time.h>
      4 #include <stdlib.h>
      5 
      6 char *baseStr = "adb shell input tap ";
      7 int info[8][3] = {
      8     {0, 0, 0},
      9     {0, 0, 0},
     10     {0, 0, 0},
     11     {0, 0, 0},
     12     {0, 0, 0},
     13     {0, 0, 0},
     14     {0, 0, 0},
     15     {0, 0, 0},
     16 };
     17 
     18 /**
     19  * 自定义乘方函数,求a的b次方
     20  * @param  int a
     21  * @param  int b
     22  * @return int r
     23  */
     24 int power(int a, int b)
     25 {
     26     int i, r = 1;
     27     for (i = 0; i < b; i++) r *= a;
     28     return r;
     29 }
     30 
     31 /**
     32  * 自定义执行函数
     33  * @param int dx    x 坐标
     34  * @param int dy    y 坐标
     35  */
     36 void func(int dx, int dy)
     37 {
     38     char dxStr[10];             // x 坐标字符串
     39     char dyStr[10];             // y 坐标字符串
     40     char str[100];              // adb 命令字符串
     41     
     42     strcpy(str, baseStr);
     43     // 数字转换为字符串
     44     itoa(dx, dxStr, 10);
     45     itoa(dy, dyStr, 10);
     46     // 字符串拼接
     47     strcat(str, dxStr);
     48     strcat(str, " ");
     49     strcat(str, dyStr);
     50     system(str);                // 调用 system
     51     system("cls");              // 使用模拟器会出现警告
     52 }
     53 
     54 /**
     55  * 写文件
     56  */
     57 void wFile(char *fileName)
     58 {
     59     int flag = 1, flag2 = 1;                                // 标志
     60     FILE *fp;
     61     int startX, startY;                                     // 参考坐标
     62     int dx, dy;                                             // 相对坐标
     63     POINT pt = {0, 0};
     64     int startT = 0, t;                                      // 开始时间和时间间隔
     65     int i = 0;
     66     
     67     fp = fopen(fileName, "w");
     68     while (getch() == ' ')                                  // 按下空格键,执行循环
     69     {
     70         GetCursorPos(&pt);                                  // 获取当前位置坐标
     71         if (flag)                                           // 获取参考坐标
     72         {
     73             startX = (&pt)->x;
     74             startY = (&pt)->y;
     75             printf("参考坐标为:x=%d,y=%d", startX, startY);
     76             flag = 0;
     77         }
     78         else
     79         {
     80             t = flag2 ? 0 : (clock() - startT);             // 延时时间
     81             if(flag2) flag2 = 0;
     82             dx = (&pt)->x - startX;
     83             dy = (&pt)->y - startY;
     84             startT = clock();                               // 获取当前时间,作为下一次开始时间
     85             // 给数组赋值
     86             if (t == 0) info[i][0] = t;
     87             else info[i][0] = t - 500;
     88             info[i][1] = dx;
     89             info[i++][2] = dy;
     90             fprintf(fp, "%d,%d,%d
    ", (t - 500), dx, dy);           // 将信息存储在 info.log 文件中
     91             func(dx, dy);                                   // 运行执行函数
     92         }
     93     }
     94     fclose(fp);                                             // 关闭文件
     95 }
     96 
     97 int main()
     98 {
     99     FILE *out;                                              // 要读取的文件
    100     char temp[10];
    101     char sc, nc, rc;
    102     int i = 0, j, k;                                        // 循环变量
    103     char ch;                                                // 文件读取后的存储值
    104     int flag = 1;                                           // 标志
    105     
    106     // 更改窗口大小
    107     system("mode con cols=40 lines=20");
    108     
    109     system("adb devices");
    110     printf("如果设备不存在,不建议继续执行
    是否需要继续执行?y/n?");
    111     scanf(" %c", &sc);
    112     if (sc != 'y' && sc != 'Y') exit(0);
    113     
    114     // 判断文件是否存在
    115     if ((out = fopen("info.log", "r")) == NULL)
    116     {
    117         printf("当前文件夹下未检测到记录文件,是否需要新建?(文件录入方式请参照readme.txt)y/n?");
    118         scanf(" %c", &nc);
    119         if (nc == 'y' || nc == 'Y')
    120         {
    121             wFile("info.log");                              // 写入文件 info.log
    122             flag = 0;                                       // 将 flag 置0
    123         }
    124         else exit(0);
    125     }
    126     
    127     // 判断是否需要从文件中读取
    128     if (flag)
    129     {
    130         i = 0;
    131         j = 0;
    132         printf("已找到记录文件,是否重新录入?y/n?");
    133         scanf(" %c", &rc);
    134         if (rc == 'y' || rc == 'Y') wFile("info.log");      // 重新写入文件
    135         // 读取文件中的内容,给 info 数组赋值
    136         while ((ch = fgetc(out)) != EOF)
    137         {
    138             // 判断是否是 ',' 或者换行
    139             if (ch != ',' && ch != '
    ') temp[i++] = ch;
    140             else
    141             {
    142                 i = 0;                                      // i置0
    143                 info[j / 3][j % 3] = atoi(temp);            // 给数组赋值
    144                 for (k = 0; k < 10; k++) temp[k] = '
    ';    // 清空 temp
    145                 j++;
    146             }
    147         }
    148     }
    149     fclose(out);                                            // 关闭文件
    150     
    151     // 执行操作
    152     while (1)
    153     {
    154         for (i = 0; i < 8; i++)
    155         {
    156             Sleep(info[i][0]);                              // 延时
    157             func(info[i][1], info[i][2]);                   // 执行
    158         }
    159         Sleep(3000);
    160     }
    161     return 0;
    162 }

    怎么说呢,感谢谭浩强教授,哈哈。

    链接:https://pan.baidu.com/s/18rLpBahcP0nW7I5CSWRgtA
    提取码:yslx

    有些不务正业,哈哈,学习还是为了玩,那将毫无意义 (^_^)

  • 相关阅读:
    软件安装的list(0918)
    putty配色备份
    曹工谈Spring Boot:Spring boot中怎么进行外部化配置,一不留神摔一跤;一路debug,原来是我太年轻了
    使用Hystrix的插件机制,解决在使用线程隔离时,threadlocal的传递问题
    曹工谈并发:Synchronized升级为重量级锁后,靠什么 API 来阻塞自己
    曹工力荐:调试 jdk 中 rt.jar 包部分的源码(可自由增加注释,修改代码并debug)
    曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚
    曹工说Redis源码(7)-- redis server 的周期执行任务,到底要做些啥
    曹工说Redis源码(6)-- redis server 主循环大体流程解析
    曹工说Redis源码(5)-- redis server 启动过程解析,以及EventLoop每次处理事件前的前置工作解析(下)
  • 原文地址:https://www.cnblogs.com/Super-Lee/p/10595303.html
Copyright © 2011-2022 走看看