酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

优化并整合成一个子程序:.版本 2 .支持库 iext .支持库 spec .子程序 坐标数组去重, 图色返回信息, 公开 .参数 原始坐标数组, 坐标数组, 数组 .参数 距离阈值, 整数型 .局部变量 结果数组, 图色返回信息, , "0" .局部变量 i, 整数型 .局部变量 j, 整数型 .局部变量 是否重复, 逻辑型 .局部变量 距离, 双精度小数型 .如果真 (取数组成员数 (原始坐标数组) ≤ 0) 返回 (结果数组) .如果真结束 加入成员 (结果数组, 原始坐标数组 [1]) .计次循环首 (取数组成员数 (原始坐标数组), i) 是否重复 = 假 .如果真 (i = 1) 到循环尾 () .如果真结束 .计次循环首 (取数组成员数 (结果数组), j) 距离 = 求平方根 (求次方 (原始坐标数组 [i].x - 结果数组 [j].x, 2) + 求次方 (原始坐标数组 [i].y - 结果数组 [j].y, 2)) .如果真 (距离 ≤ 距离阈值)

我将为你优化并整合这两个子程序。以下是优化后的代码: ```easy .版本 2 .支持库 iext .支持库 spec .子程序 自动出售物资, 逻辑型, 公开 .参数 最大尝试次数, 整数型, 可空, 默认值=5 .局部变量 循环次数, 整数型 .局部变量 坐标x, 整数型 .局部变量 坐标y, 整数型 .局部变量 找到标志, 逻辑型 .局部变量 开始时间, 整数型 .局部变量 物品坐标, 图色返回信息, , "0" .局部变量 去重物品坐标, 坐标数组 .局部变量 物品区域x1, 整数型 .局部变量 物品区域y1, 整数型 .局部变量 物品区域x2, 整数型 .局部变量 物品区域y2, 整数型 .局部变量 跳过标志, 逻辑型 .局部变量 实际选择数量, 整数型 .局部变量 物品数量, 整数型 .如果真 (是否为空 (最大尝试次数)) 最大尝试次数 = 5 .如果真结束 状态条_运行状态.置文本 (1, "开始自动出售物资") 编辑框_日志.加入文本 ("开始自动出售物资" + #换行符) ' ==== 步骤1: 打开仓库 ==== .如果真 (执行界面操作("仓库", "仓库_.bmp", "8D8F8F", 225, 25, 314, 60) = 假) 返回 (假) .如果真结束 ' ==== 步骤2: 点击批量操作 ==== .如果真 (执行界面操作("批量操作", "仓库_批量.bmp", "A0A5A9", 991, 780, 1020, 811) = 假) 返回 (假) .如果真结束 ' ==== 步骤3: 选择出售商品 ==== 编辑框_日志.加入文本 ("→ 选择商品" + #换行符) 循环次数 = 0 找到标志 = 假 开始时间 = 取启动时间 () 实际选择数量 = 0 .循环判断首 () .如果真 (是否已选择商品 ()) 编辑框_日志.加入文本 ("商品已选择" + #换行符) 跳出循环 () .如果真结束 物品数量 = 乐玩.图色_找图扩展 (1029, 107, 1513, 363, "物品选择框.bmp", "000000", 0.9, 0, 物品坐标) .如果真 (物品数量 > 0) 去重物品坐标 = 坐标数组去重 (物品坐标, 20) .计次循环首 (取数组成员数 (去重物品坐标), i) 跳过标志 = 假 物品区域x1 = 去重物品坐标 [i].x + 20 物品区域y1 = 去重物品坐标 [i].y - 20 物品区域x2 = 物品区域x1 + 100 物品区域y2 = 物品区域y1 + 100 .如果真 (乐玩.图色_找色 (物品区域x1, 物品区域y1, 物品区域x2, 物品区域y2, "FF0000", 0.8, 0, 坐标x, 坐标y) 或 乐玩.图色_找色 (物品区域x1, 物品区域y1, 物品区域x2, 物品区域y2, "FFD700", 0.8, 0, 坐标x, 坐标y)) 跳过标志 = 真 编辑框_日志.加入文本 ("发现贵重物品,跳过" + #换行符) .如果真结束 .如果真 (跳过标志 = 假) 乐玩.鼠标_移至点击 (去重物品坐标 [i].x, 去重物品坐标 [i].y, 200) 实际选择数量 = 实际选择数量 + 1 延迟 (300) .如果真结束 .计次循环尾 () .如果真结束 循环次数 = 循环次数 + 1 .如果真 (循环次数 ≥ 最大尝试次数 或 取启动时间 () - 开始时间 > 5000) 状态条_运行状态.置文本 (1, "选择商品失败") 编辑框_日志.加入文本 ("选择商品失败" + #换行符) 返回 (假) .如果真结束 延迟 (500) .循环判断尾 () ' ==== 步骤4: 确认出售 ==== .如果真 (执行界面操作("出售确认", "出售确认.bmp", "FF0000", 800, 500, 900, 600) = 假) 返回 (假) .如果真结束 状态条_运行状态.置文本 (1, "自动出售完成") 编辑框_日志.加入文本 ("自动出售完成,共出售" + 到文本 (实际选择数量) + "件物品" + #换行符) 返回 (真) .子程序 执行界面操作, 逻辑型 .参数 操作名称, 文本型 .参数 图片名称, 文本型 .参数 特征颜色, 文本型 .参数 颜域x1, 整数型 .参数 颜域y1, 整数型 .参数 颜域x2, 整数型 .参数 颜域y2, 整数型 .局部变量 循环次数, 整数型 .局部变量 坐标x, 整数型 .局部变量 坐标y, 整数型 .局部变量 找到标志, 逻辑型 .局部变量 开始时间, 整数型 编辑框_日志.加入文本 ("→ " + 操作名称 + #换行符) 循环次数 = 0 找到标志 = 假 开始时间 = 取启动时间 () .循环判断首 () .如果真 (调用 ("是否在" + 操作名称 + "界面")) 编辑框_日志.加入文本 ("已在" + 操作名称 + "界面" + #换行符) 返回 (真) .如果真结束 .如果真 (窗口_是否激活 (游戏句柄) = 假) 窗口_置顶 (游戏句柄, 真) 延迟 (200) .如果真结束 .如果真 (乐玩.图色_找图 (0, 0, 1600, 900, 图片名称, "000000", 0.8, 0, 坐标x, 坐标y)) 找到标志 = 真 .如果真结束 .如果真 (乐玩.图色_找色 (颜域x1, 颜域y1, 颜域x2, 颜域y2, 特征颜色, 0.9, 0, 坐标x, 坐标y)) 找到标志 = 真 .如果真结束 .如果真 (找到标志) 乐玩.鼠标_移至点击 (坐标x, 坐标y, 500) 延迟 (300) 编辑框_日志.加入文本 (操作名称 + "成功" + #换行符) 返回 (真) .如果真结束 循环次数 = 循环次数 + 1 .如果真 (循环次数 ≥ 5 或 取启动时间 () - 开始时间 > 5000) 状态条_运行状态.置文本 (1, 操作名称 + "失败") 编辑框_日志.加入文本 (操作名称 + "失败" + #换行符) 返回 (假) .如果真结束 延迟 (500) .循环判断尾 () .子程序 坐标数组去重, 坐标数组 .参数 原始坐标数组, 坐标数组 .参数 距离阈值, 整数型 .局部变量 结果数组, 坐标数组, , "0" .局部变量 i, 整数型 .局部变量 j, 整数型 .局部变量 是否重复, 逻辑型 .局部变量 距离, 双精度小数型 .如果真 (取数组成员数 (原始坐标数组) ≤ 0) 返回 (结果数组) .如果真结束 加入成员 (结果数组, 原始坐标数组 [1]) .计次循环首 (取数组成员数 (原始坐标数组), i) 是否重复 = 假 .如果真 (i = 1) 到循环尾 () .如果真结束 .计次循环首 (取数组成员数 (结果数组), j) 距离 = 求平方根 (求次方 (原始坐标数组 [i].x - 结果数组 [j].x, 2) + 求次方 (原始坐标数组 [i].y - 结果数组 [j].y, 2)) .如果真 (距离 ≤ 距离阈值) 是否重复 = 真 跳出循环 () .如果真结束 .计次循环尾 () .如果真 (是否重复 = 假) 加入成员 (结果数组, 原始坐标数组 [i]) .如果真结束 .计次循环尾 () 返回 (结果数组) ``` 优化点: 1. 将重复的界面操作逻辑提取为独立的子程序"执行界面操作" 2. 使用动态调用函数名来减少重复代码 3. 合并了相似的颜色检测逻辑 4. 增加了返回值用于判断操作是否成功 5. 优化了日志输出格式 需要注意的逻辑点: 1. 坐标去重算法的时间复杂度为O(n²),当坐标数量很大时可能影响性能 2. 颜色检测区域是固定偏移量,如果物品大小变化可能导致检测失败 3. 鼠标点击操作后没有验证点击是否真正生效 [2025-07-23 10:26:29 | AI写代码神器 | 2181点数解答]

相关提问