準備工作
下載adb
然後設定全域性變數。
開啟開發者模式
我是用 雷電模擬器
的。
步驟是 設定
-> 點選 關於平板電腦
開啟開發者模式 -> 進入開發者模式 -> 勾選 usb除錯
總之把 ubs除錯
開啟了就可以了。
複製程式碼儲存成檔案
<?php
// 王者農藥
class Wzny
{
// 長寬 就是手機畫素
protected $w,$h;
protected $next_x,$next_y; // 下一步xy
protected $start_x,$start_y; // 闖關xy
protected $sure_x,$sure_y; // 確定xy
protected $auto_x,$auto_y; // 自動xy
protected $again_x,$again_y; // 再次挑戰xy
protected $back_x,$back_y; // 返回xy
protected $core_x,$core_y; // 中心xy
protected $device; // // 那個裝置
public function __construct($w,$h,$device)
{
$this->device = $device;
$this->w = $w;
$this->h = $h;
$this->next_x = $w * .74786;
$this->next_y = $h * .87962;
$this->start_x = $w * .76923;
$this->start_y = $h * .83333;
$this->sure_x = $w * .91025;
$this->sure_y = $h * .9166666;
$this->auto_x = $w * .94017;
$this->auto_y = $h * .138888;
$this->again_x = $w * .8547;
$this->again_y = $h * .916666;
$this->back_x = $w * .69017;
$this->back_y = $h * .916666;
$this->core_x = $w * .5;
$this->core_y = $h * .5;
}
// 列印xy座標
public function printfXy()
{
$str = "{$this->w}x{$this->h}的座標\n";
$str .= sprintf("下一步:%d %d\n",$this->next_x,$this->next_y);
$str .= sprintf("闖關:%d %d\n",$this->start_x,$this->start_y);
$str .= sprintf("確定:%d %d\n",$this->sure_x,$this->sure_y);
$str .= sprintf("自動:%d %d\n",$this->auto_x,$this->auto_y);
$str .= sprintf("再次挑戰:%d %d\n",$this->again_x,$this->again_y);
$str .= sprintf("返回:%d %d\n",$this->back_x,$this->back_y);
$str .= sprintf("中心:%d %d\n",$this->core_x,$this->core_y);
echo $str;
}
// 開始刷金幣 $num 代表次數
public function start()
{
// 闖關
$this->click_screen($this->start_x,$this->start_y);
// 睡20秒
sleep(20);
// 點選螢幕中心 防止是繼續的
$this->click_screen($this->core_x,$this->core_y);
// 再次挑戰
$this->click_screen($this->again_x,$this->again_y);
// 闖關
$this->click_screen($this->start_x,$this->start_y);
sleep(2);
// 重新再點選 點錯位置也無所謂
$this->start();
}
// 使用adb點選xy座標
public function click_screen($x,$y)
{
system("adb -s {$this->device} shell input tap {$x} {$y}");
echo "正在點選 {$x} {$y} \n";
}
}
// 如: 960 540 emulator-5554
// 傳遞解析度 和 adb的裝置名稱
$wzny1 = new Wzny($argv[1],$argv[2],$argv[3]);
$wzny1->printfXy();
$wzny1->start();
開啟adb
adb devices
可以看到一臺裝置。
開啟闖關頁面
檢視下自己的 解析度
。
php wzny.php 高 寬 裝置名稱
總結
這個刷金幣好慢,沒怎麼看,一局好像才22金幣,(困難模式的)。
比如這些名字,完全是 adb
做的嘛。
只要是個語言,都可以呼叫外部系統命令。c語言指令碼開發, 王者農藥自動...
解析度計算按鈕xy座標
我先用我手機測試2340 * 1080
畫素
比如 下一步
按鈕,我的手機位置在 x:1750 y:950
方向。
高: 2340 / 1750 = 0.74786
寬: 1080 / 950 = 0.87962
。
如果在 960 * 540
的手機,那麼 下一步
按鈕所在 xy
:
x位置: 960 * 0.74786 = 717
y位置: 540 * 0.87962 = 474
本作品採用《CC 協議》,轉載必須註明作者和本文連結