本文用于使用java实现种树*[目前仅限于Mac OS系统]*
可以帮助你在forests中永远保持排行榜第一.
在使用本教程之前,你需要先安装:
1,Chrome for mac.
2,Java编程器「本文中使用的是Eclipse」
3,Forest for Chrome插件
4,耐心
首先先介绍一下种树的基本原理:[就是按键精灵]:
使用java.Robot实现屏幕自动操控,实现挂机(因此可以使用在其他游戏上)
关于java.Robot的使用可以参照这篇文章:
https://blog.csdn.net/xietansheng/article/details/78453672
Tips:截取坐标还可以使用command+shift+4显示,十字旁边的小数字就是点的坐标.
步骤1,打开chrome.
目前我只找到了2种方法:
(1)直接在程序坞打开:
Robot robot = new Robot();
robot.delay(100);
robot.mouseMove(539, 783);//这里填写你的chrome在程序坞中的坐标
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(5000);
(2)在Finder中打开:
需要提前设置好一个能打开Chrome的窗口,
Robot robot = new Robot();
robot.delay(100);
robot.mouseMove(539, 783);//这里填写你的chrome在Finder中的坐标
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(5000);
(3)其实还可以用文件打开指令,但我试了很多次没用.
步骤2,定位Forests在屏幕中的坐标
直接最大化窗口,使坐标固定.
robot.mouseMove(230, 10);//打开视图
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(213, 135);//窗口最大化
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
步骤3:自动种树:
注意:此处的坐标为Mac book pro2015 版前的坐标,可能会不准,需根据实际情况修改.
robot.mouseMove(956, 59);//打开插件
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(835, 255);//对上一次种树点击ok
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(724, 98);//点击返回
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(835, 206);//点击图标种树
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
步骤四:设置计时器:
可以使用while循环实现:
int t = 7200;
while (t > 7200) {
robot.delay(1000);
t--;
System.out.println("Time left: " + t + "s.");
}
}
步骤五:设置循环.
完整代码:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.IOException;
//InputEvent.BUTTON1_MASK 鼠标左键
//InputEvent.BUTTON2_MASK 鼠标中键
//InputEvent.BUTTON3_MASK 鼠标右键
public class ForestsI {
public static void main(String[] args) throws AWTException, Exception {
Robot robot = new Robot();
robot.delay(100);
System.out.println("The location is detected in one circumstance.");
Thread.sleep(1000);
System.out.println("Please make sure that you have opened mac fan control and minimize the manu.");
Thread.sleep(1000);
System.out.println("There is only 70 icon in the main bar.");
Thread.sleep(1000);
int k = 1;
while (k > 0) {
robot.mouseMove(539, 783);//most important
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(5000);
robot.mouseMove(230, 10);//open sets
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(213, 135);//maximize the windows
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(956, 59);//open forests
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(835, 255);//click OK
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(724, 98);//click back
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.delay(1000);
robot.mouseMove(835, 206);//click plant
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
int t = 0;
while (t < 7200) {
robot.delay(1000);
t++;
int tl=7200-t;
System.out.println("Time left: " + tl + "s.");
}
}
接下来你就可以一边使用Forests一边干自己想做的事情了,不用担心自己会忘记打卡.
当然,本人更建议把这个用在更多可以直接无脑挂机的游戏上,可以安装MUMU虚拟机实现每日签到,做一些简单的任务:如某方舟的基建,打卡,签到,刷一些基本的副本,把更多时间用在编程上.