• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    微信跳一跳php代码实现

    本文实例为大家分享了php微信跳一跳的具体代码,供大家参考,具体内容如下

    ?php 
     
    require 'config.php'; 
     
    function similar($rgb1, $rgb2) { 
     $r1 = ($rgb1 >> 16)  0xFF; 
     $g1 = ($rgb1 >> 8)  0xFF; 
     $b1 = $rgb1  0xFF; 
     $r2 = ($rgb2 >> 16)  0xFF; 
     $g2 = ($rgb2 >> 8)  0xFF; 
     $b2 = $rgb2  0xFF; 
     return abs($r1 - $r2)  10  abs($b1 - $b2)  10  abs($g1 - $g2)  10; 
    } 
     
    function getStart() { 
     global $image; 
     $width = imagesx($image); 
     $height = imagesy($image); 
     for ($i = $height / 3; $i  $height / 3 * 2; $i++) { 
      for ($j = 0; $j  $width - 75; $j++) { 
       if (checkStart($i, $j)) { 
        $x = $i; 
        $y = $j + 37; 
       } 
      } 
     } 
     return array($x, $y); 
    } 
     
    function getEnd() { 
     global $image; 
     global $sx, $sy; 
     $l_r = 0; 
     $cnt = 0; 
     $width = imagesx($image); 
     $height = imagesy($image); 
     for ($i = $height / 3; $i  $sx; $i++) { 
      $demo = imagecolorat($image, 0, $i); 
      for ($l = 0; $l  $width; $l++) { 
       $c = imagecolorat($image, $l, $i); 
       if (!similar($c, $demo)) { 
        $r = $l; 
        while($r+1  $width  !similar(imagecolorat($image, $r+1, $i), $demo)){ 
         $r++; 
        } 
        if (abs(($l + $r) / 2 - $sy) > 20) { 
         if (!isset($mid)) $mid = ($l + $r) / 2; 
         if ($r - $l > BODY_WIDTH * 1.1){ 
          if ($r = $l_r) { 
           $cnt ++; 
           if ($cnt == 3) { 
            return [$i, round($mid)]; 
           } 
          } 
          else { 
           $cnt = 0; 
          } 
          $l_r = $r; 
         } 
        } 
        $l = $r; 
       } 
      } 
     } 
     
     return [$sx - round(abs($mid-$sy)/sqrt(3)), round($mid)];; 
    } 
     
    $cheet = [ 
     2829129, 2829129, 2829129, 2829129, 2829387, 2960716, 2960461, 
     2960463, 3026256, 3026256, 3092563, 3092563, 3158614, 3158615, 
     3224408, 3290202, 3356252, 3356252, 3356252, 3356767, 3357024, 
     3553376, 3618913, 3618913, 3553891, 3684707, 3750243, 3684706, 
     3684707, 3684707, 3684707, 3750243, 3618914, 3618913, 3684450, 
     3750243, 3750243, 3750243, 3750243, 3750243, 3684706, 3618913, 
     3618913, 3618913, 3684450, 3684706, 3684706, 3684450, 3684450, 
     3750243, 3750243, 3684450, 3684706, 3750243, 3618913, 3618913, 
     3618913, 3684448, 3749727, 3749727, 3749727, 3749727, 3749727, 
     3749470, 3749469, 3749469, 3749721, 3749720, 3749720, 3814998, 
     3814997, 3880534, 3880533, 3946835, 3881042 
    ]; 
     
    function checkStart($sx, $sy) { 
     global $cheet; 
     global $image; 
     for ($i = 0; $i  75; $i++) { 
      $rgb = imagecolorat($image, $sy + $i, $sx); 
      if (!similar($rgb, $cheet[$i])) { 
       return false; 
      } 
     } 
     return true; 
    } 
     
    function screencap() { 
     ob_start(); 
     system('adb shell screencap -p /sdcard/screen.png'); 
     system('adb pull /sdcard/screen.png .'); 
     ob_end_clean(); 
    } 
     
    function press($time) { 
     system('adb shell input swipe 500 1600 500 1601 ' . $time); 
    } 
     
    for ($id = 0; ; $id++) { 
     echo sprintf("#%05d: ", $id); 
     // 截图 
     screencap(); 
     // 获取坐标 
     $image = imagecreatefrompng('screen.png'); 
     list($sx, $sy) = getStart(); 
     list($tx, $ty) = getEnd(); 
     if ($sx == 0) break; 
     echo sprintf("(%d, %d) -> (%d, %d) ", $sx, $sy, $tx, $ty); 
     // 图像描点 
     imagefilledellipse($image, $sy, $sx, 10, 10, 0xFF0000); 
     imagefilledellipse($image, $ty, $tx, 10, 10, 0xFF0000); 
     imagepng($image, sprintf("screen/%05d.png", $id)); 
     // 计算按压时间 
     $time = pow(pow($tx - $sx, 2) + pow($ty - $sy, 2), 0.425) * PRESS_TIME; 
     $time = round($time); 
     echo sprintf("time: %f\n", $time); 
     press($time); 
     // 等待下一次截图 
     sleep(SLEEP_TIME); 
    } 
    
    
    ?php 
    /** 
     * 按压力度参数,根据实际表现进行调节 
     * 如果跳远了就调低点 
     */ 
    //define('PRESS_TIME', 3.752); 
    define('PRESS_TIME', 3.452); 
    /** 
     * 睡眠时间 
     */ 
    define('SLEEP_TIME', 2); 
    /** 
     * 角色宽度,不需要调节 
     */ 
    define('BODY_WIDTH', 75); 
    

    ###################我是分割线######################

    另一种方法

    function jump() { 
    sleep(2.5);//延迟 2.5 秒,音乐盒、便利店、井盖等站 2 秒加分 
    $screenShell = "cd D:\adb shell /system/bin/screencap -p /sdcard/screenshot.pngadb pull /sdcard/screenshot.png d:jumper/screenshot.png"; 
    exec($screenShell);//截图 
     
    $i=imagecreatefrompng("d:jumper/screenshot.png");//读取图片 
    $point=array(); 
    for ($y=400;$yimagesy($i);$y++) {//从第 400 行开始,避开上部内容 
    for ($x=0;$ximagesx($i);$x++) {//横向扫描 
    $rgb = imagecolorat($i,$x,$y);//取得颜色 
    $point["now"]["r"] = ($rgb>>16)  0xFF; 
    $point["now"]["g"] = ($rgb>>8)  0xFF; 
    $point["now"]["b"] = $rgb  0xFF; 
    if(isset($point["last"]["r"])){ 
    if(!isset($point["x"]["a"])){ 
    if( abs($point["now"]["r"]-$point["last"]["r"])>1 
    or abs($point["now"]["g"]-$point["last"]["g"])>1 
    or abs($point["now"]["b"]-$point["last"]["b"])>1 
    ){ 
    $point["x"]["a"]=$x; 
    if(imagesx($i)/2>$x){ 
    $point["direction"]="left"; 
    }else{ 
    $point["direction"]="right"; 
    } 
    $point["a"]=$point["last"]; 
    } 
    }else{ 
    if($point["now"]==$point["a"]){ 
    $point["x"]["b"]=$x-1; 
    break; 
    } 
    } 
    } 
    $point["last"]=$point["now"]; 
    } 
    if(isset($point["x"])){ 
    break; 
    } 
    } 
     
    $param["left"] = 3750; 
    $param["right"] = 3100; 
    $time = pow((abs(imagesx($i)/2-($point["x"]["a"]+$point["x"]["a"])/2)/imagesx($i)),1)*$param[$point["direction"]]; 
     
    if($time400){ 
    $time+=($param[$point["direction"]]/300); 
    } 
    $time = round($time,0); 
    echo "direction:".$point["direction"]; 
    echo "\nx.a:".$point["x"]["a"]; 
    echo "\nx.b:".$point["x"]["b"]; 
    echo "\ntime:".$time."\n"; 
    $touchShell = "cd D:\adb shell input swipe 50 250 250 250 ".$time; 
    exec($touchShell); 
    imagedestroy($i); 
    jump(); 
    } 
     
    jump(); 
    
    

    更多内容大家可以参考专题《微信跳一跳》进行学习。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
    上一篇:PHP简单选择排序(Simple Selection Sort)算法学习
    下一篇:php实现的微信分享到朋友圈并记录分享次数功能
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    微信跳一跳php代码实现 微信,跳,一跳,php,代码,实现,