Rumah > pembangunan bahagian belakang > tutorial php > 如何用PHP代码实现微信跳一跳

如何用PHP代码实现微信跳一跳

不言
Lepaskan: 2023-04-01 15:44:01
asal
1628 orang telah melayarinya

这篇文章主要为大家详细介绍了微信跳一跳辅助php代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

<?php 
 
require &#39;config.php&#39;; 
 
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(&#39;adb shell screencap -p /sdcard/screen.png&#39;); 
 system(&#39;adb pull /sdcard/screen.png .&#39;); 
 ob_end_clean(); 
} 
 
function press($time) { 
 system(&#39;adb shell input swipe 500 1600 500 1601 &#39; . $time); 
} 
 
for ($id = 0; ; $id++) { 
 echo sprintf("#%05d: ", $id); 
 // 截图 
 screencap(); 
 // 获取坐标 
 $image = imagecreatefrompng(&#39;screen.png&#39;); 
 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); 
}
Salin selepas log masuk

<?php 
/** 
 * 按压力度参数,根据实际表现进行调节 
 * 如果跳远了就调低点 
 */ 
//define(&#39;PRESS_TIME&#39;, 3.752); 
define(&#39;PRESS_TIME&#39;, 3.452); 
/** 
 * 睡眠时间 
 */ 
define(&#39;SLEEP_TIME&#39;, 2); 
/** 
 * 角色宽度,不需要调节 
 */ 
define(&#39;BODY_WIDTH&#39;, 75);
Salin selepas log masuk

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

另一种方法

function jump() { 
sleep(2.5);//延迟 2.5 秒,音乐盒、便利店、井盖等站 2 秒加分 
$screenShell = "cd D:\&adb shell /system/bin/screencap -p /sdcard/screenshot.png&adb pull /sdcard/screenshot.png d:jumper/screenshot.png"; 
exec($screenShell);//截图 
 
$i=imagecreatefrompng("d:jumper/screenshot.png");//读取图片 
$point=array(); 
for ($y=400;$y<imagesy($i);$y++) {//从第 400 行开始,避开上部内容 
for ($x=0;$x<imagesx($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($time<400){ 
$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();
Salin selepas log masuk

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何使用php动态生成版权所有信息的方法

利用php开发微信之的关注事件

Atas ialah kandungan terperinci 如何用PHP代码实现微信跳一跳. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan