# autorun **Repository Path**: xushivip/autorun ## Basic Information - **Project Name**: autorun - **Description**: 一个专为Android游戏设计的自动化脚本框架!🎮✨ 不会编程?没关系!这个脚本框架可以帮你自动化Android游戏操作,解放双手,直接在手机上运行自动完成重复的游戏任务。 - **Primary Language**: Go - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 13 - **Created**: 2025-09-05 - **Last Updated**: 2025-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AutoRun 游戏自动化框架 基于Go语言开发的Night Crows游戏自动化框架,采用状态机模式管理任务执行,结合图像识别、OCR文本识别和场景识别实现智能化游戏操作。 ## 🚀 快速开始 ### 1. 环境准备 #### AutoGo 自动化框架 - 参考官网:[AutoGo](https://autogo.cc/#/) - 下载并配置 AutoGo 开发环境 - 确保设备连接正常 #### OCR 服务配置 - OCR 服务提供商:[番茄OCR](https://www.52tomato.com/console/buygoods) - 需要购买卡密(测试卡几块钱即可) - 在 `core/ocr.go` 中配置您的授权信息: ```go config := TomatoOCR.Config{ LicenseKey: "您的授权密钥", Remark: "测试", } ``` #### Screenshot 图色工具 - 自研的截图和图色识别工具 - **Mac电脑兼容**: 专门针对Mac系统优化,解决Mac平台兼容性问题 - 提供Web界面的图色调试功能 - 编译运行screenshot工具: ```bash cd screenshot go build -o screenshot-tool web_main.go ./screenshot-tool ``` ### 2. 编译运行 ```bash # 编译运行 go build -o nightcrows main.go ./nightcrows ``` ## 📁 项目结构 ### 程序入口 - **`main.go`** - 程序入口,创建状态机和异常守护,启动自动化流程 ### 核心模块 (core/) - **`global.go`** - 全局实例定义 - `OCR` - 全局OCR处理器实例 - `OpenCV` - 全局图像识别处理器实例 - `Color` - 全局颜色处理器实例 - **`config.go`** - 配置管理系统 - `ConfigManager` - 配置管理器,支持多层路径配置访问 - `Get()` - 获取配置值 - `GetString()` - 获取字符串配置 - `GetInt()` - 获取整数配置 - `GetBool()` - 获取布尔配置 - `GetMap()` - 获取映射配置 - `DataStore` - 全局数据存储结构 - `GetAppPackage()` - 获取应用包名 - **`ocr.go`** - OCR文本识别处理 - `DetectText()` - 识别指定区域文字 - `DetectAllText()` - 识别区域内所有文字 - `FindText()` - 查找指定文字坐标 - `WaitFor()` - 等待目标文字出现 - `ClickWhileExists()` - 持续点击直到文字消失 - `ClickIfTextExists()` - 检测文字存在则点击 - **`opencv.go`** - OpenCV图像识别处理 - `FindImage()` - 查找单个图像匹配 - `FindImageAll()` - 查找所有图像匹配 - `WaitFor()` - 等待图像出现 - `ClickWhileExists()` - 持续点击直到图像消失 - `ClearTemplateCache()` - 清空模板缓存 - **`motion.go`** - 动作控制和交互 - `Click()` - 点击指定坐标 - `RandomClickInArea()` - 区域内随机点击 - `Swipe()` - 滑动操作 - `Sleep()` - 延时等待 - `RandomSleep()` - 随机延时 - `CloseAllWindows()` - 关闭所有弹窗 - **`color.go`** - 颜色识别和检测 - `Pixel()` - 获取指定坐标颜色值 - `CmpColor()` - 比较指定坐标颜色 - `FindColor()` - 查找目标颜色 - `GetColorCountInRegion()` - 统计区域内符合条件的像素数量 - `DetectsMultiColors()` - 多点颜色比对 - `FindMultiColors()` - 查找匹配的多点颜色序列 - `WaitForColor()` - 等待目标颜色出现 ### 状态机系统 (state/) - **`machine.go`** - 状态机核心实现 - `StateMachine` - 状态机结构,管理任务执行流程 - `NewStateMachine()` - 创建状态机实例 - `Run()` - 运行状态机主循环 - `executeNextTask()` - 执行下一个任务 - `StartExceptionHandling()` - 开始异常处理 - `StopExceptionHandling()` - 结束异常处理 - **`registry.go`** - 任务注册管理 - `TaskInfo` - 任务信息结构 - `Registry` - 任务注册表 - `Register()` - 注册任务 - `GetOrderedTasks()` - 获取按顺序排序的任务列表 - `ShouldExecute()` - 检查任务是否应该执行 - `Execute()` - 执行任务 - **`exception.go`** - 异常处理系统 - `ExceptionHandler` - 异常处理器结构 - `ExceptionGuard` - 异常守护结构 - `RegisterException()` - 注册异常处理器 - `Start()` - 启动异常守护 - `checkExceptions()` - 检查各种异常 ### 任务系统 (task/) - **`tasks.go`** - 具体任务实现 - `打怪升级()` - 主要任务函数 - `买药()` - 购买药水任务 - `回城()` - 回城任务 - **`exception.go`** - 任务异常处理 - `RegisterDefaultExceptions()` - 注册默认异常处理器 - `检测_游戏进程是否存在()` - 检测游戏进程 - `检测界面异常()` - 检测界面状态异常 - `游戏进程开启()` - 处理游戏进程启动和登录流程 ### 场景识别 (scene/) - **`identify.go`** - 场景识别核心 - `SceneConfig` - 场景配置结构 - `SceneManager` - 场景管理器 - `Identify()` - 识别当前场景 - `checkImageCondition()` - 检查图像条件 - `checkTextCondition()` - 检查文本条件 - `loadSceneConfig()` - 加载场景配置 ### 平台API (platform/) - **`api.go`** - 平台能力封装 - `PlatformAPI` - 平台API结构 - `Click()` - 点击操作封装 - `ClickInRect()` - 区域内随机点击 - `HumanizedClickInRect()` - 人性化区域点击 ### 资源管理 (assets/) - **`definitions.go`** - 嵌入式资源定义 - `ImageFile` - 嵌入的图片文件系统 - `ConfigFile` - 嵌入的配置文件系统 - `TemplateMap` - 模板图像缓存 - `MaskMap` - 遮罩图像缓存 ### 其他模块 - **`TomatoOCR/`** - OCR识别客户端 - `Client` - OCR客户端结构 - `Config` - OCR配置 - `NewClient()` - 创建OCR客户端 - **`util/`** - 工具函数 - `contains.go` - 包含检查工具 - `http.go` - HTTP请求工具 - **`AutoGo/`** - 自动化底层模块 (第三方库) - 提供设备控制、图像处理、输入模拟等底层功能 - **`screenshot/`** - 自研图色工具 (Mac兼容) - `web_main.go` - Web界面截图工具主程序 - `go.mod` - 模块依赖管理 - `screenshot-tool` - 编译后的可执行文件 - 专门解决Mac平台的图色识别兼容性问题 ### 配置文件 (assets/config/) - **`default.json`** - 默认配置文件,包含应用包名等基础配置 - **`scene.json`** - 场景识别配置,定义各种游戏场景的识别条件 - **`scene_map.json`** - 地图场景配置,定义地图相关场景识别 ## 📝 核心特性 - **状态机管理**: 基于状态机的任务调度和流程控制 - **图像识别**: OpenCV驱动的高精度图像匹配和检测 - **OCR识别**: 支持多语言的文本识别和相似度匹配 - **场景识别**: 配置化的场景检测和自动识别 - **异常处理**: 自动异常检测和恢复机制 - **任务系统**: 优先级和间隔控制的任务执行系统 - **配置驱动**: JSON配置文件驱动的灵活配置系统