You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用Robot类基于二维数组自动控制鼠标绘制岛屿?

自动鼠标绘制岛屿的实现方案

这完全可行,核心思路是把二维数组中的每个数字映射到对应的岛屿绘制路径,再通过鼠标控制库执行这些路径。以下是具体实现方案:

一、技术选型

  • 鼠标控制库:优先选跨平台的Python库pyautogui,上手快且支持Windows/macOS/Linux;如果追求更高精度,Windows可直接调用user32.dll,macOS用Quartz,Linux用xdotool。
  • 路径映射表:提前为0-63每个数字定义对应的鼠标绘制路径(比如岛屿的轮廓点序列)。

二、核心实现步骤

  1. 建立岛屿类型与绘制路径的映射
    针对每个岛屿类型(0-63),手动记录其绘制的坐标路径(相对每个单元格的原点),比如数字0对应2x2方块,路径就是[(0,0), (20,0), (20,20), (0,20), (0,0)](20是单元格像素大小,可自定义)。把映射关系存在字典或JSON文件中:

    island_paths = {
        0: [(0,0), (20,0), (20,20), (0,20), (0,0)],
        1: [(10,0), (0,20), (20,20), (10,0)],
        # 补充剩余62种岛屿的路径
    }
    
  2. 计算每个数组元素的绘制起始坐标
    假设二维数组为grid = [[0,1,2], [3,4,5]],设定单元格大小cell_size=20,整体绘制起始点start_x=100, start_y=100。数组中第i行第j列元素的起始坐标为:

    current_x = start_x + j * cell_size
    current_y = start_y + i * cell_size
    
  3. 执行鼠标绘制
    以pyautogui为例,遍历数组元素,将相对路径转为绝对屏幕坐标,控制鼠标拖动绘制:

    import pyautogui
    
    pyautogui.PAUSE = 0.01  # 绘制间隔,按需调整
    cell_size = 20
    start_x, start_y = 100, 100
    grid = [[0,1,2], [3,4,5]]  # 你的二维数组
    
    for i, row in enumerate(grid):
        for j, island_type in enumerate(row):
            path = island_paths.get(island_type, [])
            if not path:
                continue
            # 计算当前岛屿的坐标偏移
            offset_x = start_x + j * cell_size
            offset_y = start_y + i * cell_size
            # 移动到路径起点并开始绘制
            pyautogui.moveTo(offset_x + path[0][0], offset_y + path[1][0])
            pyautogui.mouseDown()
            # 遍历路径绘制轮廓
            for point in path[1:]:
                pyautogui.moveTo(offset_x + point[0], offset_y + point[1])
            pyautogui.mouseUp()
    

三、关键注意事项

  • 坐标校准:如果绘制位置偏差,用pyautogui.position()获取当前鼠标位置,调整start_x、start_y或cell_size。
  • 绘制速度:pyautogui.PAUSE值越小绘制越快,但过快手绘软件可能无法识别,需根据目标软件适配。
  • 异常处理:添加判断逻辑,跳过0-63范围外的数组元素,避免程序崩溃。
  • 填充逻辑:如果岛屿需要内部填充,可在绘制轮廓后,用鼠标拖动填充区域(比如从轮廓内一点拖动到另一点)。

四、高精度备选方案

如果pyautogui精度不够,Windows平台可使用C++调用SendInput函数实现底层鼠标控制;macOS用Quartz框架直接模拟鼠标事件,这类方案开发成本稍高,但精度和稳定性更强。

内容的提问来源于stack exchange,提问作者Ayush Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:05:34