【问题标题】:Random mouse movement between 2 coordinates?2个坐标之间的随机鼠标移动?
【发布时间】:2021-03-02 10:04:51
【问题描述】:

我和我的朋友做了一个游戏,我们正在尝试为它创建一个机器人。

它一遍又一遍地重复相同的动作。但鼠标从 A 点到 B 点始终遵循相同的路径。

有没有办法让鼠标从 A 点移动到 B 点,并且永远不会使用相同的路径?

这是机器人的代码:

// import the robotjs library
var robot = require('robotjs');

function main() {
    console.log("Starting...");
    sleep(4000);

    // basic infinite loop
    while (true) {
        robot.moveMouse(764, 557);
        robot.mouseClick();
        robot.moveMouse(356, 432);
        sleep(8000);
    }
}

function sleep(ms) {
    Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
}

main();

我是编码新手,请多多包涵;)

【问题讨论】:

  • 好吧,如果你的目标是不应该重复相同的路径,那么可能会有n 的排列数量。您需要有一些已定义路径的列表,并且可以尝试在这些路径之间随机切换。
  • 难道没有一个选项可以让鼠标在 A 点和 B 点之间随机移动吗?所以鼠标很可能永远不会使用相同的路径两次?
  • @Rick 你错过了这里的重点......“可能永远不会”不是这种情况 - 它会“肯定在某个时候”使用与以前相同的路径。如果脚本足够快,那真的很快。

标签: javascript robotjs


【解决方案1】:

给你:

const robot = require("robotjs")

const START = [764, 557]
const END = [356, 432]
const loops = 100

robot.setMouseDelay(0)

const getRandom = (min, max) => {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

const go = (coord) => {
    return new Promise((resolve) => {
        robot.moveMouseSmooth(getRandom(END[0], START[0]), getRandom(END[1], START[1]), 1)
        robot.moveMouseSmooth(coord[0], coord[1], 1)
        resolve()
    })
}

const recurse = async (loops) => {
    for (let i = 0; i < loops; i++) {
        await go(START)
        console.log("click") // Insert clicking action here, for single left mouseclick just use, robot.mouseClick() 
        await go(END)
    }
} 

recurse(loops)

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多