ICe 4 mesi fa
parent
commit
a4ee04d688
33 ha cambiato i file con 181 aggiunte e 344 eliminazioni
  1. 44 0
      opencv/moveWindow.ps1
  2. 10 6
      src/main/java/com/sencorsta/rabs/obj/ai/api/BaseScene.java
  3. 9 0
      src/main/java/com/sencorsta/rabs/obj/ai/api/Scene.java
  4. 2 0
      src/main/java/com/sencorsta/rabs/obj/ai/api/Status.java
  5. 2 3
      src/main/java/com/sencorsta/rabs/obj/ai/scene/challenge/SceneMain_Challenge_Extreme.java
  6. 6 26
      src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Free.java
  7. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Friend.java
  8. 5 5
      src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Home.java
  9. 4 4
      src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Home_Select.java
  10. 4 4
      src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Home_SelectRes.java
  11. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_buy.java
  12. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_Gift_Evil.java
  13. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_King_hell.java
  14. 4 4
      src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_King_kings.java
  15. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_Leader_quick.java
  16. 3 4
      src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Help.java
  17. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Info.java
  18. 3 3
      src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out.java
  19. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out_BigBoss.java
  20. 4 4
      src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out_Boss.java
  21. 3 4
      src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out_Fight.java
  22. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Task.java
  23. 4 4
      src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_Endless_Quick.java
  24. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_Endless_Reward.java
  25. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_VS.java
  26. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_VS_Quick.java
  27. 2 3
      src/main/java/com/sencorsta/rabs/obj/ai/scene/mail/SceneMain_Mail.java
  28. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/qiyi/SceneMain_Qiyu_find.java
  29. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/qiyi/SceneMain_Qiyu_helper.java
  30. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/qiyi/SceneMain_Qiyu_quest.java
  31. 2 2
      src/main/java/com/sencorsta/rabs/obj/ai/scene/welfare/SceneMain_Welfare.java
  32. 10 1
      src/main/java/com/sencorsta/rabs/ui/robot/OnePunchPanel.java
  33. 32 239
      src/main/java/com/sencorsta/rabs/ui/robot/RobotPanel.java

+ 44 - 0
opencv/moveWindow.ps1

@@ -0,0 +1,44 @@
+# 获取 "BlueStacks App Player" 的窗口句柄
+$bluestacks = Get-Process | Where-Object { $_.MainWindowTitle -eq "BlueStacks App Player" } | Select-Object -First 1
+$hwnd = ($bluestacks.MainWindowHandle)
+
+# 定义调整窗口大小和将窗口移动到前台的函数:MoveWindowToFrontAndResize
+function MoveWindowToFrontAndResize {
+    param (
+        [Parameter(Mandatory=$true)] [IntPtr]$Handle,
+        [Parameter(Mandatory=$true)] [int]$x,
+        [Parameter(Mandatory=$true)] [int]$y,
+        [Parameter(Mandatory=$true)] [int]$width,
+        [Parameter(Mandatory=$true)] [int]$height
+    )
+    
+    # 加载 user32.dll
+    $user32 = Add-Type -Name "User32" -Namespace "Win32" -PassThru `
+              -MemberDefinition @"
+              [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd);
+              [DllImport("user32.dll")] public static extern bool MoveWindow(IntPtr hWnd, int x, int y, int width, int height, bool repaint);
+"@
+
+    # 将窗口移动到前台
+    $null = $user32::SetForegroundWindow($Handle)
+
+    # 延迟一段时间确保窗口已经是前台
+    Start-Sleep -Seconds 1
+
+    # 调整窗口大小和位置
+    $null = $user32::MoveWindow($Handle, $x, $y, $width, $height, $true)
+}
+
+# 定义窗口的新位置和大小
+$x = 100
+$y = 100
+$width = 1170
+$height = 563
+
+# 如果找到了窗口句柄,则移动窗口到前台并调整其大小
+if ($hwnd -ne 0) {
+    MoveWindowToFrontAndResize -Handle $hwnd -x $x -y $y -width $width -height $height
+    Write-Host "窗口已移动到前台并调整为宽度: $width, 高度: $height."
+} else {
+    Write-Host "未能找到 'BlueStacks App Player' 窗口。"
+}

+ 10 - 6
src/main/java/com/sencorsta/rabs/obj/ai/api/BaseScene.java

@@ -1,7 +1,6 @@
 package com.sencorsta.rabs.obj.ai.api;
 
 import cn.hutool.core.thread.ThreadUtil;
-import cn.hutool.core.util.RandomUtil;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.sencorsta.rabs.obj.ai.AiManage;
@@ -38,9 +37,8 @@ public class BaseScene {
     @JsonIgnore
     protected List<Scene> children = new ArrayList<>();
 
-    // TODO ice 如果代码改了ResetType 数据不会刷新
     @Getter
-    ResettableData<BaseStatus> dailyRecord = new ResettableData<>(ResettableData.ResetType.DAILY, BaseStatus::new);
+    ResettableData<BaseStatus> record = new ResettableData<>(getType(), BaseStatus::new);
 
     @Getter
     @Setter
@@ -200,7 +198,7 @@ public class BaseScene {
      * @return 数据
      */
     public String getData() {
-        return Jsons.toJsonString(dailyRecord);
+        return Jsons.toJsonString(record);
     }
 
     /**
@@ -209,9 +207,9 @@ public class BaseScene {
      * @return
      */
     public void loadData(String dataJson) {
-        dailyRecord = Jsons.fromJsonString(dataJson, new TypeReference<ResettableData<BaseStatus>>() {
+        record = Jsons.fromJsonString(dataJson, new TypeReference<ResettableData<BaseStatus>>() {
         });
-        dailyRecord.maybeReset();
+        record.maybeReset();
     }
 
 
@@ -249,4 +247,10 @@ public class BaseScene {
 //    }
 
 
+    /**
+     * 重置
+     */
+    public ResettableData.ResetType getType(){
+        return ResettableData.ResetType.DAILY;
+    };
 }

+ 9 - 0
src/main/java/com/sencorsta/rabs/obj/ai/api/Scene.java

@@ -1,5 +1,7 @@
 package com.sencorsta.rabs.obj.ai.api;
 
+import com.sencorsta.rabs.util.ResettableData;
+
 import java.awt.AWTException;
 import java.util.List;
 
@@ -74,4 +76,11 @@ public interface Scene {
      */
     float getPriority();
 
+
+
+    /**
+     * 重置
+     */
+    public ResettableData.ResetType getType();
+
 }

+ 2 - 0
src/main/java/com/sencorsta/rabs/obj/ai/api/Status.java

@@ -1,5 +1,7 @@
 package com.sencorsta.rabs.obj.ai.api;
 
+import com.sencorsta.rabs.util.ResettableData;
+
 public interface Status {
     /**
      * 重置

+ 2 - 3
src/main/java/com/sencorsta/rabs/obj/ai/scene/challenge/SceneMain_Challenge_Extreme.java

@@ -5,7 +5,6 @@ import com.sencorsta.rabs.annotation.SceneAnnotation;
 import com.sencorsta.rabs.obj.ai.AiManage;
 import com.sencorsta.rabs.obj.ai.api.BaseScene;
 import com.sencorsta.rabs.obj.ai.api.Scene;
-import org.opencv.core.Point;
 
 import java.awt.AWTException;
 
@@ -99,12 +98,12 @@ public class SceneMain_Challenge_Extreme extends BaseScene implements Scene {
         randomToClick();
         ThreadUtil.sleep(3000);
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 6 - 26
src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Free.java

@@ -2,15 +2,11 @@ package com.sencorsta.rabs.obj.ai.scene.energy;
 
 import cn.hutool.core.thread.ThreadUtil;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.core.type.TypeReference;
 import com.sencorsta.rabs.annotation.SceneAnnotation;
 import com.sencorsta.rabs.obj.ai.AiManage;
 import com.sencorsta.rabs.obj.ai.api.BaseScene;
 import com.sencorsta.rabs.obj.ai.api.Scene;
-import com.sencorsta.rabs.obj.ai.status.fight.BaseStatus;
 import com.sencorsta.rabs.util.ResettableData;
-import com.sencorsta.utils.object.Jsons;
-import lombok.Getter;
 
 import java.awt.AWTException;
 
@@ -32,8 +28,6 @@ public class SceneMain_Energy_Free extends BaseScene implements Scene {
     private static String PathTake = System.getProperty("user.dir") + "\\opencv\\scene\\energy\\free\\take.png";
 
 
-    @Getter
-    ResettableData<BaseStatus> freeRecord = new ResettableData<>(ResettableData.ResetType.SPECIAL_RULES, BaseStatus::new);
     @Override
     public void back() throws AWTException {
         moveToClick(PathBack, 0.9);
@@ -65,34 +59,20 @@ public class SceneMain_Energy_Free extends BaseScene implements Scene {
         moveToClick(PathTake,0.9);
         ThreadUtil.sleep(2000);
 
-        getFreeRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getFreeRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
     /**
-     * 返回持久化数据
-     *
-     * @return 数据
+     * 重置
      */
     @Override
-    public String getData() {
-        return Jsons.toJsonString(freeRecord);
-    }
-
-    /**
-     * 加载持久化数据
-     *
-     * @return
-     */
-    @Override
-    public void loadData(String dataJson) {
-        freeRecord = Jsons.fromJsonString(dataJson, new TypeReference<ResettableData<BaseStatus>>() {
-        });
-        freeRecord.maybeReset();
-    }
+    public ResettableData.ResetType getType(){
+        return ResettableData.ResetType.SPECIAL_RULES;
+    };
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Friend.java

@@ -60,12 +60,12 @@ public class SceneMain_Energy_Friend extends BaseScene implements Scene {
         moveToClick(PathSend,0.9);
         ThreadUtil.sleep(2000);
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 5 - 5
src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Home.java

@@ -78,8 +78,8 @@ public class SceneMain_Energy_Home extends BaseScene implements Scene {
             if (checkHas(PathReward, 0.9)) {
                 moveToClick(PathReward, 0.9);
                 ThreadUtil.sleep(2000);
-                int count = getDailyRecord().getData().getCount();
-                getDailyRecord().getData().setCount(count+1);
+                int count = getRecord().getData().getCount();
+                getRecord().getData().setCount(count+1);
             }
         }
 
@@ -94,15 +94,15 @@ public class SceneMain_Energy_Home extends BaseScene implements Scene {
                 ThreadUtil.sleep(2000);
                 randomToClick();
                 ThreadUtil.sleep(2000);
-                int count = getDailyRecord().getData().getCount();
-                getDailyRecord().getData().setCount(count+1);
+                int count = getRecord().getData().getCount();
+                getRecord().getData().setCount(count+1);
             }
         }
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().getCount()>=2 && hasChildDone();
+        return getRecord().getData().getCount()>=2 && hasChildDone();
     }
 
 }

+ 4 - 4
src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Home_Select.java

@@ -46,7 +46,7 @@ public class SceneMain_Energy_Home_Select extends BaseScene implements Scene {
                 moveToClick(PathEnter_dark, 0.9);
                 ThreadUtil.sleep(2000);
             }
-            int count = getDailyRecord().getData().getCount();
+            int count = getRecord().getData().getCount();
             if (count > 0 && count < 3) {
                 //刷新
                 moveToClick(PathRefresh, 0.9);
@@ -71,18 +71,18 @@ public class SceneMain_Energy_Home_Select extends BaseScene implements Scene {
 
     @Override
     public void think() throws AWTException {
-        int count = getDailyRecord().getData().getCount();
+        int count = getRecord().getData().getCount();
         if (count < maxCount) {
             moveToClick(PathOnButton, 0.9);
             ThreadUtil.sleep(2000);
-            getDailyRecord().getData().setCount(count + 1);
+            getRecord().getData().setCount(count + 1);
         }
         isTempDone = true;
     }
 
     @Override
     public boolean isDone() {
-        if (getDailyRecord().getData().getCount() >= maxCount) {
+        if (getRecord().getData().getCount() >= maxCount) {
             return true;
         }
         return isTempDone;

+ 4 - 4
src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_Home_SelectRes.java

@@ -49,7 +49,7 @@ public class SceneMain_Energy_Home_SelectRes extends BaseScene implements Scene
                 moveToClick(PathEnter_dark, 0.9);
                 ThreadUtil.sleep(2000);
             }
-            int count = getDailyRecord().getData().getCount();
+            int count = getRecord().getData().getCount();
             switch (count){
                 case 0:
                     moveToClick(PathEnter0, 0.9, new Point(0, 20));
@@ -78,18 +78,18 @@ public class SceneMain_Energy_Home_SelectRes extends BaseScene implements Scene
 
     @Override
     public void think() throws AWTException {
-        int count = getDailyRecord().getData().getCount();
+        int count = getRecord().getData().getCount();
         if (count < maxCount) {
             moveToClick(PathOnButton, 0.9);
             ThreadUtil.sleep(2000);
-            getDailyRecord().getData().setCount(count + 1);
+            getRecord().getData().setCount(count + 1);
         }
         isTempDone = true;
     }
 
     @Override
     public boolean isDone() {
-        if (getDailyRecord().getData().getCount() >= maxCount) {
+        if (getRecord().getData().getCount() >= maxCount) {
             return true;
         }
         return isTempDone;

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/energy/SceneMain_Energy_buy.java

@@ -68,12 +68,12 @@ public class SceneMain_Energy_buy extends BaseScene implements Scene {
         moveToClick(PathBuy,0.9);
         ThreadUtil.sleep(2000);
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_Gift_Evil.java

@@ -65,12 +65,12 @@ public class SceneMain_Explore_Gift_Evil extends BaseScene implements Scene {
         ThreadUtil.sleep(2000);
         moveToClick(PathClose,0.9);
         ThreadUtil.sleep(2000);
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_King_hell.java

@@ -78,12 +78,12 @@ public class SceneMain_Explore_King_hell extends BaseScene implements Scene {
         moveToClick(PathClose, 0.9);
         ThreadUtil.sleep(2000);
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 4 - 4
src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_King_kings.java

@@ -71,7 +71,7 @@ public class SceneMain_Explore_King_kings extends BaseScene implements Scene {
 
     @Override
     public void think() throws AWTException {
-        int count = getDailyRecord().getData().getCount();
+        int count = getRecord().getData().getCount();
 
         if (count==2){
             moveToClick(PathDay, 0.9);
@@ -110,7 +110,7 @@ public class SceneMain_Explore_King_kings extends BaseScene implements Scene {
             ThreadUtil.sleep(2000);
             moveToClick(PathCancle, 0.9);
             ThreadUtil.sleep(2000);
-            getDailyRecord().getData().setCount(maxCount);
+            getRecord().getData().setCount(maxCount);
             return;
         }
 
@@ -125,12 +125,12 @@ public class SceneMain_Explore_King_kings extends BaseScene implements Scene {
         randomToClick();
         isTempDone = true;
 
-        getDailyRecord().getData().setCount(count+1);
+        getRecord().getData().setCount(count+1);
     }
 
     @Override
     public boolean isDone() {
-        if (getDailyRecord().getData().getCount()>= maxCount){
+        if (getRecord().getData().getCount()>= maxCount){
             return true;
         }
         return isTempDone;

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/explore/SceneMain_Explore_Leader_quick.java

@@ -90,13 +90,13 @@ public class SceneMain_Explore_Leader_quick extends BaseScene implements Scene {
             ThreadUtil.sleep(10000);
         }
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 3 - 4
src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Help.java

@@ -6,7 +6,6 @@ import com.sencorsta.rabs.annotation.SceneAnnotation;
 import com.sencorsta.rabs.obj.ai.AiManage;
 import com.sencorsta.rabs.obj.ai.api.BaseScene;
 import com.sencorsta.rabs.obj.ai.api.Scene;
-import org.opencv.core.Point;
 
 import java.awt.*;
 
@@ -73,7 +72,7 @@ public class SceneMain_Family_Help extends BaseScene implements Scene {
         ThreadUtil.sleep(2000);
 
         while (checkHas(PathGive,0.9)){
-            int count = getDailyRecord().getData().getCount();
+            int count = getRecord().getData().getCount();
             if (count<3){
                 moveToClick(PathGive, 0.9);
                 ThreadUtil.sleep(2000);
@@ -100,12 +99,12 @@ public class SceneMain_Family_Help extends BaseScene implements Scene {
         ThreadUtil.sleep(3000);
 
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Info.java

@@ -80,12 +80,12 @@ public class SceneMain_Family_Info extends BaseScene implements Scene {
             ThreadUtil.sleep(2000);
             randomToClick();
         }
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 3 - 3
src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out.java

@@ -68,7 +68,7 @@ public class SceneMain_Family_Out extends BaseScene implements Scene {
 
     @Override
     public void think() throws AWTException {
-        if (getDailyRecord().getData().isDone()){
+        if (getRecord().getData().isDone()){
             return;
         }
         ThreadUtil.sleep(2000);
@@ -88,12 +88,12 @@ public class SceneMain_Family_Out extends BaseScene implements Scene {
         ThreadUtil.sleep(4000);
 
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone()&&hasChildDone();
+        return getRecord().getData().isDone()&&hasChildDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out_BigBoss.java

@@ -66,12 +66,12 @@ public class SceneMain_Family_Out_BigBoss extends BaseScene implements Scene {
         randomToClick();
         ThreadUtil.sleep(4000);
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 4 - 4
src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out_Boss.java

@@ -58,7 +58,7 @@ public class SceneMain_Family_Out_Boss extends BaseScene implements Scene {
     static int maxTime=3;
     @Override
     public void think() throws AWTException {
-        int count = getDailyRecord().getData().getCount();
+        int count = getRecord().getData().getCount();
 
         if (count<maxTime){
             ThreadUtil.sleep(2000);
@@ -66,7 +66,7 @@ public class SceneMain_Family_Out_Boss extends BaseScene implements Scene {
             ThreadUtil.sleep(2000);
 
             if (checkHas(PathCancel,0.9)){
-                getDailyRecord().getData().setCount(count+1);
+                getRecord().getData().setCount(count+1);
             }else {
                 moveToClick(PathStart2, 0.9);
                 ThreadUtil.sleep(2000);
@@ -82,14 +82,14 @@ public class SceneMain_Family_Out_Boss extends BaseScene implements Scene {
                 moveToClick(PathOver, 0.9);
                 ThreadUtil.sleep(6000);
 
-                getDailyRecord().getData().setCount(count+1);
+                getRecord().getData().setCount(count+1);
             }
         }
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().getCount() >= maxTime;
+        return getRecord().getData().getCount() >= maxTime;
     }
 
 }

+ 3 - 4
src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Out_Fight.java

@@ -6,7 +6,6 @@ import com.sencorsta.rabs.annotation.SceneAnnotation;
 import com.sencorsta.rabs.obj.ai.AiManage;
 import com.sencorsta.rabs.obj.ai.api.BaseScene;
 import com.sencorsta.rabs.obj.ai.api.Scene;
-import org.opencv.core.Point;
 
 import java.awt.*;
 
@@ -58,7 +57,7 @@ public class SceneMain_Family_Out_Fight extends BaseScene implements Scene {
     static int maxTime=3;
     @Override
     public void think() throws AWTException {
-        int count = getDailyRecord().getData().getCount();
+        int count = getRecord().getData().getCount();
 
         ThreadUtil.sleep(2000);
         moveToClick(PathStart, 0.9);
@@ -76,13 +75,13 @@ public class SceneMain_Family_Out_Fight extends BaseScene implements Scene {
         ThreadUtil.sleep(6000);
 
 
-        getDailyRecord().getData().setCount(count+1);
+        getRecord().getData().setCount(count+1);
         isTempDone=true;
     }
 
     @Override
     public boolean isDone() {
-        if (getDailyRecord().getData().getCount()>=maxTime){
+        if (getRecord().getData().getCount()>=maxTime){
             return true;
         }
         return isTempDone;

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/family/SceneMain_Family_Task.java

@@ -77,12 +77,12 @@ public class SceneMain_Family_Task extends BaseScene implements Scene {
                 ThreadUtil.sleep(2000);
             }
         }
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 4 - 4
src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_Endless_Quick.java

@@ -32,7 +32,7 @@ public class SceneMain_Fight_Endless_Quick extends BaseScene implements Scene {
     @Override
     public void back() throws AWTException {
         moveToClick(PathBack, 0.9);
-        int count = getDailyRecord().getData().getCount();
+        int count = getRecord().getData().getCount();
         if (count < maxCount) {
             isTempDone =false;
         }
@@ -60,7 +60,7 @@ public class SceneMain_Fight_Endless_Quick extends BaseScene implements Scene {
 
     @Override
     public void think() throws AWTException {
-        int count = getDailyRecord().getData().getCount();
+        int count = getRecord().getData().getCount();
         if (count < maxCount) {
             while (!checkHas(PathStart, 0.9)) {
                 ThreadUtil.sleep(2000);
@@ -72,7 +72,7 @@ public class SceneMain_Fight_Endless_Quick extends BaseScene implements Scene {
             while (!checkHas(PathOk, 0.9)) {
                 ThreadUtil.sleep(2000);
             }
-            getDailyRecord().getData().setCount(count + 1);
+            getRecord().getData().setCount(count + 1);
         }
         isTempDone =true;
     }
@@ -80,7 +80,7 @@ public class SceneMain_Fight_Endless_Quick extends BaseScene implements Scene {
 
     @Override
     public boolean isDone() {
-        if (getDailyRecord().getData().getCount()>=maxCount){
+        if (getRecord().getData().getCount()>=maxCount){
             return true;
         }
         return isTempDone;

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_Endless_Reward.java

@@ -75,13 +75,13 @@ public class SceneMain_Fight_Endless_Reward extends BaseScene implements Scene {
         randomToClick();//第二次是恭喜获得
         ThreadUtil.sleep(2000);
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_VS.java

@@ -64,14 +64,14 @@ public class SceneMain_Fight_VS extends BaseScene implements Scene {
             ThreadUtil.sleep(2000);
         }
         if (checkHas(PathGoldOver, 0.9) && checkHas(PathDimonOver, 0.9)) {
-            getDailyRecord().getData().setDone(true);
+            getRecord().getData().setDone(true);
         }
     }
 
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/fight/SceneMain_Fight_VS_Quick.java

@@ -84,13 +84,13 @@ public class SceneMain_Fight_VS_Quick extends BaseScene implements Scene {
                 ThreadUtil.sleep(2000);
             }
         }
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 3
src/main/java/com/sencorsta/rabs/obj/ai/scene/mail/SceneMain_Mail.java

@@ -6,7 +6,6 @@ import com.sencorsta.rabs.annotation.SceneAnnotation;
 import com.sencorsta.rabs.obj.ai.AiManage;
 import com.sencorsta.rabs.obj.ai.api.BaseScene;
 import com.sencorsta.rabs.obj.ai.api.Scene;
-import org.opencv.core.Point;
 
 import java.awt.AWTException;
 
@@ -59,14 +58,14 @@ public class SceneMain_Mail extends BaseScene implements Scene {
             randomToClick();
             ThreadUtil.sleep(3000);
 
-            getDailyRecord().getData().setDone(true);
+            getRecord().getData().setDone(true);
         }
 
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/qiyi/SceneMain_Qiyu_find.java

@@ -101,12 +101,12 @@ public class SceneMain_Qiyu_find extends BaseScene implements Scene {
             ThreadUtil.sleep(1000);
         }
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return  getDailyRecord().getData().isDone();
+        return  getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/qiyi/SceneMain_Qiyu_helper.java

@@ -82,12 +82,12 @@ public class SceneMain_Qiyu_helper extends BaseScene implements Scene {
         moveToClick(PathOk,0.9);
         ThreadUtil.sleep(2000);
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return  getDailyRecord().getData().isDone();
+        return  getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/qiyi/SceneMain_Qiyu_quest.java

@@ -96,12 +96,12 @@ public class SceneMain_Qiyu_quest extends BaseScene implements Scene {
             moveToClick(PathListBack, 0.9);
             ThreadUtil.sleep(2000);
         }
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 2 - 2
src/main/java/com/sencorsta/rabs/obj/ai/scene/welfare/SceneMain_Welfare.java

@@ -82,13 +82,13 @@ public class SceneMain_Welfare extends BaseScene implements Scene {
             ThreadUtil.sleep(2000);
         }
 
-        getDailyRecord().getData().setDone(true);
+        getRecord().getData().setDone(true);
 
     }
 
     @Override
     public boolean isDone() {
-        return getDailyRecord().getData().isDone();
+        return getRecord().getData().isDone();
     }
 
 }

+ 10 - 1
src/main/java/com/sencorsta/rabs/ui/robot/OnePunchPanel.java

@@ -23,7 +23,10 @@ import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
 import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
 import javax.swing.border.Border;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
@@ -41,6 +44,8 @@ import java.awt.event.KeyEvent;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -50,7 +55,6 @@ import java.util.regex.PatternSyntaxException;
  */
 public class OnePunchPanel extends JPanel {
 
-
     private String selectedWindowTitle;
     JComboBox<String> windowComboBox = new JComboBox<>();
     JButton captureButton = new JButton("Capture Window");
@@ -214,8 +218,13 @@ public class OnePunchPanel extends JPanel {
                 System.out.println("图像不包含相似内容。");
             }
         });
+
+
+
     }
 
+
+
     private void getWindowTitles() {
         windowComboBox.removeAllItems();
         final User32 user32 = User32.INSTANCE;

+ 32 - 239
src/main/java/com/sencorsta/rabs/ui/robot/RobotPanel.java

@@ -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 {