Java做一个让电脑循环按空格的小程序(Robot类)

最近怪猎冰原太香了,就是挂蒸汽机比较麻烦。
康了很多大神用橡皮压空格,还有倒立手柄的压Rt键,佩服佩服。
然后就想到了用按键精灵做了一个小脚本。
奈何按键精灵的广告比较烦人,老是让我弹桌面,我就用java做了一个类似的小脚本。
但是水平有限,还是做不出来可以按键控制停止,所以如果有大神会的话,可以教教我吗 Thanks (・ω・)ノ

主页面类(包装成了一个exe程序)

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * 脚本的主页面
 * @author Serendipity
 */
public class Client extends JFrame implements ActionListener {
    private JButton JStart; //定义程序开始按钮
    private JButton JOver;  //定义关闭客户端按钮
    private JLabel Title;   //定义客户端标题
    private JTextField Note;    //写一些废话

    public Client(){
        super("挂机专用");  //定义软件标题:挂机
        this.setSize(600,500);  //  定义软件边框大小
        this.setLocation(600,300);  //定义软件运行时初始位置
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);    //当关闭这个窗口时,软件停止运行

        Txt();
        Button();
    }

    //写一些文字
    public void Txt(){
        Title = new JLabel("蒸汽机给爷爬");
        this.add(Title);
        Title.setBounds(200,50,200,100);
        Title.setFont(new Font("宋体",Font.BOLD,25));

        Note = new JTextField("因为按键精灵有广告,所以就自己做了一个  by:宁宁宁酱");
        this.add(Note);
        Note.setBounds(100,200,500,30);
        Note.setFont(new Font("宋体",Font.BOLD,15));
        Note.setEditable(false);
        Note.setBorder(null);

    }

    //定义按钮
    public void Button(){
        setLayout(null);

        JStart = new JButton("开始");
        this.add(JStart);
        JStart.setBounds(40,250,160,50);
        JStart.setFont(new Font("宋体", Font.BOLD,20));
        JStart.addActionListener(this);  //键盘监听

        JOver = new JButton("关闭");
        this.add(JOver);
        JOver.setBounds(380,250,160,50);    //定义按钮位置
        JOver.setFont(new Font("宋体", Font.BOLD,20));
        JOver.addActionListener(this);  //键盘监听

        this.setVisible(true);
    }


    /**
     * Invoked when an action occurs.
     *
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == JStart) {
            this.dispose();
            try {
                Circulation circulation = new Circulation();
            } catch (AWTException ex) {
                ex.printStackTrace();
            }
        }
        if(e.getSource() == JOver){
            System.exit(0);
        }
    }

}

下面是核心,Robot类,让电脑按空格,中间设置了延迟

import java.awt.*;
import java.awt.event.KeyEvent;

/**
 *  定义让电脑自动按下空格
 * @author Serendipity
 */
public class Script {
    Robot robot = new Robot();

    public Script() throws AWTException {
        robot.keyPress(KeyEvent.VK_SPACE);
        robot.keyRelease(KeyEvent.VK_SPACE);
        robot.delay(100);
    }

}

循环

import java.awt.*;

/**
 * 定义循环结构
 * @author Serendipity
 */
public class Circulation {
    private boolean flag = true;

    public Circulation() throws AWTException {

        while(flag){
            Script script = new Script();
        }
    }

}

启动

/**
 * 运行启动
 * @author Serendipity
 */
public class Menu {
    public static void main(String[] args){
       Client client = new Client();
    }
}

下面来个视频演示(因为放不了视频只能发gif了,画质有点差)
视频演示

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个高级的Java机器人程序,它使用了计算机视觉技术来实现自动化操作: ```java import java.awt.AWTException; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class AdvancedJavaRobot { public static void main(String[] args) throws Exception { Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); Robot robot = new Robot(); while (true) { // 获取屏幕截图 BufferedImage screenshot = robot.createScreenCapture(screenRect); // 识别屏幕中的图像,返回坐标信息 int x = recognizeImage(screenshot); // 如果找到了目标图像,则对其进行操作 if (x != -1) { System.out.println("Found target image at x = " + x); // 点击目标图像 robot.mouseMove(x, 0); robot.mousePress(java.awt.event.InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(java.awt.event.InputEvent.BUTTON1_DOWN_MASK); } // 等待一段时间后再进行下一次操作 Thread.sleep(500); } } private static int recognizeImage(BufferedImage image) { // TODO: 实现图像识别算法,返回目标图像的坐标信息 return -1; } } ``` 这个程序使用了JavaRobot和计算机视觉技术,可以实现自动化操作。程序会不断获取屏幕截图,并对其进行图像识别,找出其中的目标图像,并对其进行操作。在这个例子中,我们使用了一个简单的识别算法,对屏幕截图进行扫描,找出其中的目标图像,并返回其横坐标信息。如果找到了目标图像,程序会将鼠标移动到其上方,并模拟鼠标点击操作。 需要注意的是,这个程序中的`recognizeImage()`方法是一个占位符方法,需要根据实际情况实现图像识别算法,以便正确识别目标图像。这个算法可以使用各种计算机视觉技术,如模板匹配、特征提取、神经网络等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值