微信跳wap php_如何用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);

}

/**

* 按压力度参数,根据实际表现进行调节

* 如果跳远了就调低点

*/

//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.png&adb pull /sdcard/screenshot.png d:jumper/screenshot.png";

exec($screenShell);//截图

$i=imagecreatefrompng("d:jumper/screenshot.png");//读取图片

$point=array();

for ($y=400;$y

for ($x=0;$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();

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

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值