From 35af343caf5db8c3f882cbadf72620919104b5fe Mon Sep 17 00:00:00 2001 From: wangbing Date: Sat, 31 Aug 2024 01:16:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E9=87=87=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- legend/野外_任务_L16,759.png | Bin 0 -> 2230 bytes legend/野外_搜索.png | Bin 250 -> 0 bytes .../java/com/example/jmacro/wjdr/JMacro.java | 8 +- .../example/jmacro/wjdr/JMainApplication.java | 2 + .../example/jmacro/wjdr/JMainController.java | 7 ++ .../example/jmacro/wjdr/demo/DemoThread.java | 2 +- .../jmacro/wjdr/demo/task/BaseTask.java | 4 +- .../wjdr/demo/task/Task_自动采矿.java | 10 +- .../example/jmacro/wjdr/util/ImageUtil.java | 40 ++----- src/main/resources/main.fxml | 106 ++++++++++-------- 10 files changed, 92 insertions(+), 87 deletions(-) create mode 100644 legend/野外_任务_L16,759.png delete mode 100644 legend/野外_搜索.png diff --git a/legend/野外_任务_L16,759.png b/legend/野外_任务_L16,759.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af0a4e43260d828fd67ff3575c9a45fd846837 GIT binary patch literal 2230 zcmV;n2ub&eP)uwCY>-tnT9Pi3{W=j7_XsW3MHf^WMMJ3 zv9U3Dm2JG+veqN%NR}7L+IJl-*p_$MmUlDr_WO_Q!lW1P{AVPc=e+;-f8To~(e$;$ zHXw&*RF1Gmfw-VXBF14UqCzsJ!tx6>R!FNcHP%S05e-(tBwAOa8v2YQX|Wd7(svw^ zbpK*Nfn-n#$xPoptcU2!_#hJFI?RvhkQ`$_RJ~GoTM_mUf)bFylR*U%o?gt@yD({a zjV{*x*9>{V+2S+O${Q(Mof%$Vcw^K#PqL&u-`uoe@!kXwUzV$9;+{mB6u;V!mP6g z6CkO=kaV2*0l2*1!TI0} zg0*>=8LY?VoP)|VOm){{%HD|xUngp8P)eXq0`+4dphhyxj0|FZ!i)_DB&~0+8&ft& z+K=u+*C#)M;o1jqmtBA$y@r*L9xoRKY)m_`Ix&jn*br96MzA(v!Fqg@06QXB+?x7~ z#Gsqg4s6Z3u{Gx*__1ARKlTQc8NY!2-f8%%voXcjVk;qFbJmB=84t;gjTx8tu#G7P z)@jS@lQz*E+dk9gtc#!?5uS{gFyoR_S&n}n?MJ@{+1WQ?`SLitbilFhFX?6{wid#4 zlUIaqGWgCzw#6L2ocD_B+PDRCZY5qAn-Ee~!Pj5L;BTOlN+UbiGkg`75UMZ6 zvS7r^rKsqBYtEYzIoo0nns$lKm!pH2^{6mD@?7kkpt2GnRTZMNbJheB`SD#)P-!|( zy$QvQg9wzLMX=^F7F`O0NANP?CwCqKnW%GQn6`EyKHN$U8xSF2SXYCXp^jiJ^nEuL z{c<{J8nUPkl7=Hc!R8L?B9e> zO*NI%AZb#w5H%2x4V`vdDd6jp{P^Hi{PfUu?E6bT9u;RHT6rG9x_m4+71*Mhuf|7c zLMa|%JT}IRwCev4@?EXcZ`bL!k^?y%cRW$^#+E`82pb}ZP;`4Hcp<(!qDAx1S-zKCoRIFSBVvh-DR~T z+0h(nhO&Rk&taT~E^O|C-`E1DrXDtR9l_I^34Q~)={c~K68zCc*z1cBr)-(0m&B~V z92qdnB#^>J%+NX&&>}{M9x(U9#kazys)I%T6z2XKnB~u4)kz`QpDx9(Ke~>Bj2xKB zxug6NthGfLv(W2|B6TLni(s}+`L!4$V94A9H{Sv)12UMb2BV5v*tjM*jcxFb^uq5@ z?ZE$ug3KHYm1JSGEFG4bLPY4V!8AFX4(e&^2E@G_{DU2^svBTY)L~Rv2b-pmTtA0* zxEleh93dBnu$M<9U_>N1kb>_yaszppxfpnug^}`13_mG?kE31=@R$f1Fc~yb2{dq# zE1RwbZWGnkB16cohTzsgAfVtgAmnA@5u|GmeJ9zU(Tv?kK1X&&9{7jkz9Jg~)x~fs zpCIbv5hE8&5w9LWCx;-p6Fhnm$Y4Q|-^0V_ekHGO2u5{tsulMh{}0Yz%7f-X4hG6| zV5lg7t+yOeuMSZHzj8$|j{yM!__skGx1L0+i-+4~fXktW!(&39w1iD44bjQ3aqN5{ zdhT97$#J zEtfm7_w+*?IP)oL?-WA)r~tCk0x0Wl!!pzlw|5Y3H^Io6lRypzbMUa*^cW$aX;=l` z&;mJ=pj6D*Wc-&+yIlLMY1%&|Q*`{_5*6sig!nk~<^0 zGo*lK4NN9E^!gsCRc%nnTOcQ?H4NU0wuT3&x_<+;Pae?AB2R|5FV<5s-oll_tLQB) zL`O*hI?Jv?-BE!N3kS2^h!HDKE;(qpF7(TqA?uSu-roupL3IWhjAlL5x<1rDzJro~ z7oqH{&mj3AzaQ^pwc?kj?%~6<>!|+rA80EpM$?00bku$Wj_-rfYJ}0Ehkj54xuyp) zWe1d6Duq!6{je7L5gqiSCiH50QCadisw%#Mw5<;R1p!5xa;XKXK>z>%07*qoM6N<$ Eg78Ko>i_@% literal 0 HcmV?d00001 diff --git a/legend/野外_搜索.png b/legend/野外_搜索.png deleted file mode 100644 index 10615e109c85be4be4f5a523b2ecc568387f7344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^{2(?58;~rMGjRk`oCO|{#S9F5he4R}c>anMprAss zN02WALzOB6LqjtI!_WUf`XvKHsR0ASs{{rHs~HRo;`x)}kGcWXHh8)?hE&{Ia> { while (true) { - delayTap(); ViewRect matchPic = matchPic(rect, file, minSimilar); if (matchPic != null) { return matchPic; @@ -568,10 +567,7 @@ public class JMacro { viewRect.setBottom(viewRect.getTop() + image.getHeight()); ViewRect pic = findPic(viewRect, image, minSimilar); - if (pic == null && Logger.isDebug) { - ImageUtil.show(viewRect); - } - + ImageUtil.show(viewRect); return pic; } diff --git a/src/main/java/com/example/jmacro/wjdr/JMainApplication.java b/src/main/java/com/example/jmacro/wjdr/JMainApplication.java index 47dc888..5158272 100644 --- a/src/main/java/com/example/jmacro/wjdr/JMainApplication.java +++ b/src/main/java/com/example/jmacro/wjdr/JMainApplication.java @@ -20,6 +20,7 @@ import javafx.stage.Stage; public class JMainApplication extends Application { public static Stage primaryStage; + public static JMainController mainController; @Override public void start(Stage stage) throws Exception { @@ -29,6 +30,7 @@ public class JMainApplication extends Application { stage.setMinWidth(400); stage.setMinHeight(300); FXMLLoader mainLoader = FXMLUtil.load("main.fxml"); + mainController = mainLoader.getController(); stage.setScene(new Scene(mainLoader.getRoot())); stage.centerOnScreen(); stage.show(); diff --git a/src/main/java/com/example/jmacro/wjdr/JMainController.java b/src/main/java/com/example/jmacro/wjdr/JMainController.java index 334122f..83436b3 100644 --- a/src/main/java/com/example/jmacro/wjdr/JMainController.java +++ b/src/main/java/com/example/jmacro/wjdr/JMainController.java @@ -5,6 +5,7 @@ import com.example.jmacro.wjdr.util.Capture; import com.example.jmacro.wjdr.util.Dialog; import javafx.fxml.FXML; import javafx.scene.control.Button; +import javafx.scene.image.ImageView; import java.awt.*; import java.io.File; @@ -24,6 +25,8 @@ public class JMainController { private Button stop; @FXML private Button capture; + @FXML + private ImageView preview; /** * 截图 @@ -62,4 +65,8 @@ public class JMainController { this.start.setDisable(!stop); this.stop.setDisable(stop); } + + public ImageView getPreview() { + return preview; + } } diff --git a/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java b/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java index 6b2aade..955a4d3 100644 --- a/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java +++ b/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java @@ -70,7 +70,7 @@ public class DemoThread extends JMacroThread { Logger.info("任务线程ID={}", Thread.currentThread().getId()); // 获取启动图标 Logger.info("定位启动图标"); - ViewRect launch = macro.waitAndFindPic(viewRect, "启动图标", 0.9, 5, TimeUnit.SECONDS); + ViewRect launch = macro.waitAndFindPic(viewRect, "启动图标", 0.9, 10, TimeUnit.SECONDS); if (launch != null) { Logger.info("启动图标坐标:", launch.toString()); Logger.info("启动程序"); diff --git a/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java b/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java index 381bed5..0e99d29 100644 --- a/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java +++ b/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java @@ -7,7 +7,7 @@ import com.example.jmacro.wjdr.util.Logger; /** * 基础任务类 */ -public abstract class BaseTask implements Runnable { +public abstract class BaseTask { /** * 脚本持有对象 @@ -24,8 +24,8 @@ public abstract class BaseTask implements Runnable { this.viewRect = viewRect; } - @Override public void run() { + Logger.info("守护线程ID={}", Thread.currentThread().getId()); if (Thread.currentThread().isInterrupted()) { return; } diff --git a/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java b/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java index cb86df9..9a0d47a 100644 --- a/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java +++ b/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java @@ -35,11 +35,13 @@ public class Task_自动采矿 extends BaseTask { } Logger.info("定位资源搜索按钮"); - ViewRect 野外搜索 = macro.waitAndMatchPic(this.viewRect, "野外_搜索_L33,636", 0.5); - if (野外搜索 == null) { + // 因为搜索按钮透明,不好比对,通过定位其下面的任务图标定位 + ViewRect 野外_任务 = macro.waitAndMatchPic(this.viewRect, "野外_任务_L16,759", 0.9); + if (野外_任务 == null) { Logger.error("未检测到【资源搜索按钮】,采矿终止"); return; } + ViewPoint 野外搜索 = new ViewPoint(野外_任务.getCenter()[0], 野外_任务.getCenter()[1] - 125); Logger.info("定位资源搜索按钮成功:{}", 野外搜索.toString()); macro.mouseLeftClick(野外搜索); @@ -55,8 +57,8 @@ public class Task_自动采矿 extends BaseTask { } // 检测是否是搜索界面 - ViewRect 搜索 = macro.waitAndMatchPic(this.viewRect, "野外_搜索_L18,633", 9); - if (搜索 != null) { + ViewRect 野外_任务2 = macro.waitAndMatchPic(this.viewRect, "野外_任务_L16,759", 9); + if (野外_任务2 != null) { Logger.info("退出资源搜索界面"); macro.mouseLeftClick(this.viewRect); } diff --git a/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java b/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java index aa27d9a..b582c81 100644 --- a/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java +++ b/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java @@ -2,13 +2,18 @@ package com.example.jmacro.wjdr.util; import cn.hutool.core.img.ImgUtil; import cn.hutool.core.thread.ThreadUtil; +import com.example.jmacro.wjdr.JMainApplication; import com.example.jmacro.wjdr.base.ViewRect; import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; import java.util.ArrayList; import java.util.HashMap; @@ -135,18 +140,14 @@ public class ImageUtil { } } + /** * 终端程序并展示图片 * * @param image 图片 */ public static void show(BufferedImage image) { - JFrame frame = new JFrame(); - BufferedImage read = ImgUtil.read("icon.png"); - frame.setIconImage(read); - - int viewSize = 500; - + int viewSize = 100; Image showImage = image; // 图片太大时进行缩放显示 if (image.getWidth() > viewSize || image.getHeight() > viewSize) { @@ -156,28 +157,9 @@ public class ImageUtil { showImage = ImgUtil.scale(showImage, 1.0f * viewSize / image.getHeight()); } } - ImageIcon imageIcon = new ImageIcon(showImage); - JLabel jLabel = new JLabel(imageIcon); - frame.add(jLabel); - frame.setSize(viewSize, viewSize); - frame.setVisible(true); - - boolean[] wait = new boolean[]{true}; - frame.addKeyListener(new KeyAdapter() { - @Override - public void keyReleased(KeyEvent e) { - switch (e.getKeyCode()) { - case KeyEvent.VK_ENTER: - case KeyEvent.VK_ESCAPE: { - wait[0] = false; - frame.setVisible(false); - } - break; - } - } - }); - while (wait[0]) { - ThreadUtil.sleep(300); - } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ImgUtil.write(showImage,"PNG",outputStream); + javafx.scene.image.Image image1 = new javafx.scene.image.Image(new ByteArrayInputStream(outputStream.toByteArray())); + JMainApplication.mainController.getPreview().setImage(image1); } } diff --git a/src/main/resources/main.fxml b/src/main/resources/main.fxml index 9876161..2fd1206 100644 --- a/src/main/resources/main.fxml +++ b/src/main/resources/main.fxml @@ -2,52 +2,68 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + +