|
@@ -17,7 +17,10 @@ import org.opencv.imgproc.Imgproc;
|
|
|
import javax.swing.JButton;
|
|
|
import javax.swing.JComboBox;
|
|
|
import javax.swing.JPanel;
|
|
|
+import javax.swing.JScrollPane;
|
|
|
+import javax.swing.JTextArea;
|
|
|
import javax.swing.JTextField;
|
|
|
+import javax.swing.SwingUtilities;
|
|
|
import javax.swing.event.DocumentEvent;
|
|
|
import javax.swing.event.DocumentListener;
|
|
|
import java.awt.AWTException;
|
|
@@ -27,6 +30,8 @@ import java.awt.MouseInfo;
|
|
|
import java.awt.Rectangle;
|
|
|
import java.awt.Robot;
|
|
|
import java.awt.event.InputEvent;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.io.PrintStream;
|
|
|
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
@@ -124,252 +129,40 @@ public class RobotPanel extends JPanel {
|
|
|
AppConfig.getInstance().getSetting().setByGroup("selectedWindowTitle", "robot", (String) windowComboBox.getSelectedItem());
|
|
|
AppConfig.getInstance().saveAll();
|
|
|
});
|
|
|
- thinkPoll.scheduleAtFixedRate(() -> {
|
|
|
- if (isThinking) {
|
|
|
- System.out.println("开始思考...");
|
|
|
- selectedWindowTitle = (String) windowComboBox.getSelectedItem();
|
|
|
- try {
|
|
|
- Rectangle rectangle = RobotUtil.getRectangle(selectedWindowTitle);
|
|
|
- Mat windowMat = RobotUtil.getWindowMat(rectangle);
|
|
|
- OpenWindowToFront();
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\index_yyb.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现应用宝首页...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\index_yyb_close.png", 0.9);
|
|
|
- System.out.println("应用宝首页已关闭");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\index_pub.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现游戏公告...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\index_pub_close.png", 0.9);
|
|
|
- System.out.println("游戏公告已关闭");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\index_enter.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现进入游戏按钮...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\index_enter.png", 0.9);
|
|
|
- System.out.println("进入游戏中..");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\welcome_close.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现专属招募页面...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\welcome_close.png", 0.9);
|
|
|
- System.out.println("专属招募已关闭");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\welcome_xsdd.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现限时登陆页面...");
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\welcome_xsdd_reword2.png", 0.9, windowMat)) {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\welcome_xsdd_reword2.png", 0.9, new Point(0, -50));
|
|
|
- System.out.println("限时登陆已领奖");
|
|
|
- } else {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\welcome_xsdd_close.png", 0.9);
|
|
|
- System.out.println("限时登陆页面已关闭");
|
|
|
- }
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\welcome_xsdd_gxhd.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现恭喜获得页面...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\welcome_xsdd_gxhd.png", 0.9);
|
|
|
- System.out.println("恭喜获得已关闭");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\welcome_king.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现King宣传页...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\welcome_king_close.png", 0.9);
|
|
|
- System.out.println("King宣传页已关闭");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\welcome_qiuban.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现球棒宣传页...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\welcome_king_close.png", 0.9);
|
|
|
- System.out.println("球棒宣传页已关闭");
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_helper", "dailyTasks", false)) {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_icon.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_icon.png", 0.9);
|
|
|
- System.out.println("点击进入琦玉任务");
|
|
|
- }
|
|
|
- }
|
|
|
+ logTextArea = new JTextArea();
|
|
|
+ logTextArea.setEditable(false);
|
|
|
|
|
|
+ JScrollPane scrollPane = new JScrollPane(logTextArea);
|
|
|
+ add(scrollPane, BorderLayout.CENTER);
|
|
|
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_main.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉主界面...");
|
|
|
-
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_over.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务完成...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_over.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务完成");
|
|
|
- } else {
|
|
|
- //如果3个模块都完成就返回
|
|
|
- if (AppConfig.getInstance().getSetting().getBool("daily_qy_helper", "dailyTasks", false)
|
|
|
- && AppConfig.getInstance().getSetting().getBool("daily_qy_dc", "dailyTasks", false)
|
|
|
- && AppConfig.getInstance().getSetting().getBool("daily_qy_job", "dailyTasks", false)) {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\back2.png", 0.9);
|
|
|
- System.out.println("点击返回");
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy", "dailyTasks", "true");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ redirectSystemStreams();
|
|
|
+ }
|
|
|
+ private JTextArea logTextArea;
|
|
|
+ private void updateTextArea(final String text) {
|
|
|
+ SwingUtilities.invokeLater(() -> logTextArea.append(text));
|
|
|
+ }
|
|
|
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_box.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务奖励...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_box.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务奖励");
|
|
|
- }
|
|
|
+ private void redirectSystemStreams() {
|
|
|
+ OutputStream out = new OutputStream() {
|
|
|
+ @Override
|
|
|
+ public void write(int b) {
|
|
|
+ updateTextArea(String.valueOf((char) b));
|
|
|
+ }
|
|
|
|
|
|
- //助手
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_helper", "dailyTasks", false)) {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务助手...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务助手");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob_reword.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务助手一键本次收货...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob_reword_yes.png", 0.9);
|
|
|
- ThreadUtil.sleep(5000);
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob_reword_yes.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务助手一键本次收货.");
|
|
|
- }
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("hasOverQY_ob", "dailyTasks", false)) {
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_helper_ob1", "dailyTasks", false)) {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务助手一键完成...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务助手一键完成.");
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy_helper_ob1", "dailyTasks", "true");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_helper_ob2", "dailyTasks", false)) {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob2.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务助手一键完成...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob2.png", 0.9);
|
|
|
- System.out.println("点击切换到挑战.");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务助手一键完成2...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob.png", 0.9);
|
|
|
- System.out.println("发现琦玉任务助手一键完成2.");
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy_helper_ob2", "dailyTasks", "true");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_back.png", 0.9, windowMat)) {
|
|
|
- System.out.println("2个任务完成...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_back.png", 0.9);
|
|
|
- System.out.println("点击返回.");
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy_helper", "dailyTasks", "true");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- //调查
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_reword.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉调查收货...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_ob_reword_yes.png", 0.9);
|
|
|
- System.out.println("点击确定");
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy_dc", "dailyTasks", "true");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- }
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_dc", "dailyTasks", false)) {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉调查...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc.png", 0.9);
|
|
|
- System.out.println("点击琦玉调查");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_entry.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉调查进入...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_entry.png", 0.9);
|
|
|
- System.out.println("点击琦玉调查进入");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_qb.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉调查情报...");
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_dc_qb_start", "dailyTasks", false)) {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_qb.png", 0.9);
|
|
|
- System.out.println("点击琦玉调查情报");
|
|
|
- } else {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_back.png", 0.9);
|
|
|
- System.out.println("点击返回");
|
|
|
- }
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_qb2.png", 0.9, windowMat)) {
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_dc_qb_start", "dailyTasks", false)) {
|
|
|
- System.out.println("发现琦玉调查情报弹窗...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_qb_start.png", 0.9);
|
|
|
- System.out.println("点击琦玉开始调查");
|
|
|
- ThreadUtil.sleep(5000);
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy_dc_qb_start", "dailyTasks", "true");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- } else {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\close.png", 0.9);
|
|
|
- System.out.println("点击关闭");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_qb_over.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉调查完成...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_back.png", 0.9);
|
|
|
- System.out.println("点击返回");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_qb_next.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现继续调查?");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_helper_back.png", 0.9);
|
|
|
- System.out.println("点击返回");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_dc_qb_exit.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现确认退出?");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\ok.png", 0.9);
|
|
|
- System.out.println("点击确认");
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (!AppConfig.getInstance().getSetting().getBool("daily_qy_job", "dailyTasks", false)) {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_take.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务接取...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_take.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务接取");
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_main.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务主界面...");
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_over.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务完成...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_over.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务完成");
|
|
|
- } else {
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_main_take.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务主界面...");
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_main_take.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务接取");
|
|
|
- } else {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\back2.png", 0.9);
|
|
|
- System.out.println("点击返回");
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy_job", "dailyTasks", "true");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (checkHas(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_window_take.png", 0.9, windowMat)) {
|
|
|
- System.out.println("发现琦玉任务弹窗界面...");
|
|
|
- Integer count = AppConfig.getInstance().getSetting().getInt("daily_qy_job_window_take", "dailyTasks", 0);
|
|
|
- if (count < 4) {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\daily_qy_job_window_take.png", 0.9);
|
|
|
- System.out.println("点击琦玉任务接取");
|
|
|
- AppConfig.getInstance().getSetting().setByGroup("daily_qy_job_window_take", "dailyTasks", (++count) + "");
|
|
|
- AppConfig.getInstance().saveAll();
|
|
|
- } else {
|
|
|
- moveToClick(System.getProperty("user.dir") + "\\opencv\\template\\back2.png", 0.9);
|
|
|
- System.out.println("点击返回");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public void write(byte[] b, int off, int len) {
|
|
|
+ updateTextArea(new String(b, off, len));
|
|
|
+ }
|
|
|
|
|
|
- } catch (Exception e) {
|
|
|
- System.out.println("e = " + e);
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public void write(byte[] b) {
|
|
|
+ write(b, 0, b.length);
|
|
|
}
|
|
|
- }, 3000, 3000, TimeUnit.MILLISECONDS);
|
|
|
+ };
|
|
|
+
|
|
|
+ System.setOut(new PrintStream(out, true));
|
|
|
+ System.setErr(new PrintStream(out, true));
|
|
|
}
|
|
|
|
|
|
private void moveToClick(String filename, double similarityThreshold) throws AWTException {
|