 | |  |  | AIWROK软件运算符高级应用实例
- // AIWROK软件 - 运算符高级应用实例
- // 本示例演示如何在AIWROK自动化脚本中高效使用各种运算符
- // ==================== 1. 算术运算符在坐标计算中的应用 ====================
- function coordinateCalculationExample() {
- console.log("=== 坐标计算示例 ===");
- sleep.second(2);
-
- // 获取屏幕尺寸
- var screenWidth = screen.getScreenWidth();
- var screenHeight = screen.getScreenHeight();
-
- // 计算中心点坐标
- var centerX = screenWidth / 2;
- var centerY = screenHeight / 2;
-
- // 计算四分之一区域坐标
- var quarterWidth = screenWidth / 4;
- var quarterHeight = screenHeight / 4;
-
- // 定义点击区域(左上、右上、左下、右下)
- var topLeft = {x: quarterWidth, y: quarterHeight};
- var topRight = {x: quarterWidth * 3, y: quarterHeight};
- var bottomLeft = {x: quarterWidth, y: quarterHeight * 3};
- var bottomRight = {x: quarterWidth * 3, y: quarterHeight * 3};
-
- console.log("屏幕尺寸: " + screenWidth + "x" + screenHeight);
- console.log("中心点: (" + centerX + ", " + centerY + ")");
- console.log("四分之一区域宽度: " + quarterWidth);
- console.log("四分之一区域高度: " + quarterHeight);
-
- return {
- center: {x: centerX, y: centerY},
- regions: [topLeft, topRight, bottomLeft, bottomRight]
- };
- }
- // ==================== 2. 赋值运算符在状态管理中的应用 ====================
- function stateManagementExample() {
- console.log("\n=== 状态管理示例 ===");
- sleep.second(2);
-
- // 初始化计数器
- var clickCount = 0;
- var successCount = 0;
- var failCount = 0;
-
- // 模拟多次操作
- for (var i = 0; i < 5; i++) {
- clickCount++; // 自增运算符
-
- // 模拟成功/失败
- if (Math.random() > 0.3) {
- successCount += 1; // 复合赋值运算符
- } else {
- failCount += 1;
- }
- }
-
- // 计算成功率
- var totalOps = successCount + failCount;
- var successRate = totalOps > 0 ? (successCount / totalOps) * 100 : 0;
-
- console.log("总操作次数: " + clickCount);
- console.log("成功次数: " + successCount);
- console.log("失败次数: " + failCount);
- console.log("成功率: " + successRate.toFixed(2) + "%");
-
- return {
- total: clickCount,
- success: successCount,
- fail: failCount,
- rate: successRate
- };
- }
- // ==================== 3. 字符串运算符在日志生成中的应用 ====================
- function logGenerationExample() {
- console.log("\n=== 日志生成示例 ===");
- sleep.second(2);
-
- var timestamp = new Date().getTime();
- var moduleName = "ImageFinder";
- var action = "findAndClick";
- var result = "success";
- var duration = 150; // 毫秒
-
- // 使用字符串连接运算符构建日志消息
- var logMessage = "[" + timestamp + "] " +
- moduleName + "." + action + " -> " +
- result + " (耗时: " + duration + "ms)";
-
- console.log(logMessage);
-
- // 构建结构化日志
- var structuredLog = {
- timestamp: timestamp,
- module: moduleName,
- action: action,
- result: result,
- duration: duration,
- message: logMessage
- };
-
- return structuredLog;
- }
- // ==================== 4. 比较和逻辑运算符在条件判断中的应用 ====================
- function conditionCheckExample() {
- console.log("\n=== 条件判断示例 ===");
- sleep.second(2);
-
- // 模拟元素查找结果
- var elementFound = true;
- var elementVisible = true;
- var elementClickable = false;
- var retryCount = 2;
- var maxRetries = 3;
-
- // 复杂的条件判断
- var canInteract = elementFound && elementVisible && elementClickable;
- var shouldRetry = !canInteract && retryCount < maxRetries;
- var isLastAttempt = retryCount >= maxRetries - 1;
-
- console.log("元素可交互: " + canInteract);
- console.log("应该重试: " + shouldRetry);
- console.log("是最后一次尝试: " + isLastAttempt);
-
- // 根据条件执行不同操作
- if (canInteract) {
- console.log("执行点击操作");
- } else if (shouldRetry) {
- console.log("等待后重试 (第" + (retryCount + 1) + "次)");
- } else if (isLastAttempt) {
- console.log("达到最大重试次数,操作失败");
- } else {
- console.log("未知状态");
- }
-
- return {
- canInteract: canInteract,
- shouldRetry: shouldRetry,
- isLastAttempt: isLastAttempt
- };
- }
- // ==================== 5. 位运算符在权限控制中的应用 ====================
- function permissionControlExample() {
- console.log("\n=== 权限控制示例 ===");
- sleep.second(2);
-
- // 定义权限标志(使用位运算)
- var PERMISSION_READ = 1; // 0001
- var PERMISSION_WRITE = 2; // 0010
- var PERMISSION_EXECUTE = 4; // 0100
- var PERMISSION_ADMIN = 8; // 1000
-
- // 用户权限组合
- var userPermissions = PERMISSION_READ | PERMISSION_WRITE; // 0011 (读写权限)
-
- // 检查特定权限
- var hasReadPermission = (userPermissions & PERMISSION_READ) !== 0;
- var hasWritePermission = (userPermissions & PERMISSION_WRITE) !== 0;
- var hasExecutePermission = (userPermissions & PERMISSION_EXECUTE) !== 0;
- var hasAdminPermission = (userPermissions & PERMISSION_ADMIN) !== 0;
-
- console.log("用户权限值: " + userPermissions);
- console.log("读权限: " + hasReadPermission);
- console.log("写权限: " + hasWritePermission);
- console.log("执行权限: " + hasExecutePermission);
- console.log("管理员权限: " + hasAdminPermission);
-
- // 添加权限
- userPermissions |= PERMISSION_EXECUTE; // 添加执行权限
- console.log("添加执行权限后: " + userPermissions);
-
- // 移除权限
- userPermissions &= ~PERMISSION_WRITE; // 移除写权限
- console.log("移除写权限后: " + userPermissions);
-
- return {
- initial: PERMISSION_READ | PERMISSION_WRITE,
- afterAdd: userPermissions | PERMISSION_EXECUTE,
- afterRemove: userPermissions & ~PERMISSION_WRITE
- };
- }
- // ==================== 6. 三元运算符在简化代码中的应用 ====================
- function ternaryOperatorExample() {
- console.log("\n=== 三元运算符示例 ===");
- sleep.second(2);
-
- // 根据网络状态设置超时时间
- var isWiFi = true;
- var timeout = isWiFi ? 5000 : 15000; // WiFi超时5秒,移动数据超时15秒
-
- // 根据元素存在性设置默认值
- var element = null; // 假设未找到元素
- var defaultElement = {x: 100, y: 100};
- var targetElement = element || defaultElement; // 如果element为null则使用默认值
-
- // 根据操作结果设置状态消息
- var operationSuccess = false;
- var statusMessage = operationSuccess ? "操作成功" : "操作失败";
-
- // 嵌套三元运算符(谨慎使用)
- var score = 85;
- var grade = score >= 90 ? "A" :
- score >= 80 ? "B" :
- score >= 70 ? "C" :
- score >= 60 ? "D" : "F";
-
- console.log("网络类型: " + (isWiFi ? "WiFi" : "移动数据"));
- console.log("超时时间: " + timeout + "ms");
- console.log("目标元素: (" + targetElement.x + ", " + targetElement.y + ")");
- console.log("操作状态: " + statusMessage);
- console.log("分数: " + score + ", 等级: " + grade);
-
- return {
- timeout: timeout,
- target: targetElement,
- status: statusMessage,
- grade: grade
- };
- }
- // ==================== 7. 综合应用:自动化任务调度器 ====================
- function taskSchedulerExample() {
- console.log("\n=== 任务调度器示例 ===");
- sleep.second(2);
-
- // 任务配置
- var tasks = [
- {name: "截图", interval: 5000, lastRun: 0, enabled: true},
- {name: "找图", interval: 3000, lastRun: 0, enabled: true},
- {name: "日志上传", interval: 10000, lastRun: 0, enabled: false}
- ];
-
- var currentTime = new Date().getTime();
- var executedTasks = [];
-
- // 检查并执行需要运行的任务
- for (var i = 0; i < tasks.length; i++) {
- var task = tasks[i];
-
- // 检查任务是否启用且到达执行时间
- if (task.enabled && (currentTime - task.lastRun) >= task.interval) {
- console.log("执行任务: " + task.name);
-
- // 更新最后运行时间
- task.lastRun = currentTime;
-
- // 记录执行的任务
- executedTasks.push(task.name);
-
- // 模拟任务执行
- switch (task.name) {
- case "截图":
- console.log(" -> 截取当前屏幕");
- break;
- case "找图":
- console.log(" -> 查找目标图像");
- break;
- case "日志上传":
- console.log(" -> 上传日志文件");
- break;
- }
- }
- }
-
- console.log("本次执行的任务: " + executedTasks.join(", "));
- console.log("下次检查将在 " + Math.min.apply(null, tasks.filter(function(t) {
- return t.enabled;
- }).map(function(t) {
- return t.interval - (currentTime - t.lastRun);
- })) + "ms 后");
-
- return {
- executed: executedTasks,
- nextCheck: Math.min.apply(null, tasks.filter(function(t) {
- return t.enabled;
- }).map(function(t) {
- return t.interval - (currentTime - t.lastRun);
- }))
- };
- }
- // ==================== 8. 数学运算在图像处理中的应用 ====================
- function imageProcessingExample() {
- console.log("\n=== 图像处理示例 ===");
- sleep.second(2);
-
- // 模拟图像像素处理
- var pixels = [
- [255, 128, 64], // RGB值
- [100, 200, 50],
- [30, 150, 220]
- ];
-
- // 计算平均亮度
- var totalBrightness = 0;
- var pixelCount = 0;
-
- for (var i = 0; i < pixels.length; i++) {
- for (var j = 0; j < pixels[i].length; j++) {
- totalBrightness += pixels[i][j];
- pixelCount++;
- }
- }
-
- var avgBrightness = totalBrightness / pixelCount;
-
- // 调整对比度(简单示例)
- var contrastFactor = 1.2;
- var adjustedPixels = [];
-
- for (var i = 0; i < pixels.length; i++) {
- var row = [];
- for (var j = 0; j < pixels[i].length; j++) {
- // 应用对比度调整并限制在0-255范围内
- var adjusted = Math.round((pixels[i][j] - 128) * contrastFactor + 128);
- adjusted = Math.max(0, Math.min(255, adjusted)); // 限制范围
- row.push(adjusted);
- }
- adjustedPixels.push(row);
- }
-
- console.log("原始平均亮度: " + avgBrightness.toFixed(2));
- console.log("调整后像素:");
- for (var i = 0; i < adjustedPixels.length; i++) {
- console.log(" [" + adjustedPixels[i].join(", ") + "]");
- }
-
- return {
- originalAvg: avgBrightness,
- adjustedPixels: adjustedPixels
- };
- }
- // ==================== 主执行函数 ====================
- function main() {
- console.log("AIWROK 运算符高级应用示例");
- console.log("========================\n");
-
- // 执行所有示例
- var coordResult = coordinateCalculationExample();
- var stateResult = stateManagementExample();
- var logResult = logGenerationExample();
- var conditionResult = conditionCheckExample();
- var permissionResult = permissionControlExample();
- var ternaryResult = ternaryOperatorExample();
- var schedulerResult = taskSchedulerExample();
- var imageResult = imageProcessingExample();
-
- console.log("\n=== 所有示例执行完成 ===");
- console.log("坐标计算结果: " + JSON.stringify(coordResult.center));
- console.log("状态管理结果: 成功率 " + stateResult.rate.toFixed(2) + "%");
- console.log("日志生成结果: " + logResult.message);
- console.log("条件判断结果: 可交互=" + conditionResult.canInteract);
- console.log("权限控制结果: 初始权限=" + permissionResult.initial);
- console.log("三元运算结果: 等级=" + ternaryResult.grade);
- console.log("任务调度结果: 执行了 " + schedulerResult.executed.length + " 个任务");
- console.log("图像处理结果: 平均亮度=" + imageResult.originalAvg.toFixed(2));
- }
- // 执行主函数
- main();
复制代码
| |  | |  |
|