GO语言,半自动打怪

仅供学习参考,切勿用于商业用途

go 复制代码
package main

import (
    "fmt"
    "github.com/go-vgo/robotgo"
    "math/rand"
    "time"
)

const (
    taskNum = 7
)

type Task struct {
    Name       string
    SleepTime1 int
    SleepTime2 int
    Func       func()
}

func main() {
    for i := 1; i <= 32; i++ {
        tasks := []Task{
            {
                Name:       "第1图",
                SleepTime1: 3000,
                SleepTime2: 100,
                Func:       Task1,
            },
            {
                Name:       "第2图",
                SleepTime1: 1,
                SleepTime2: 1,
                Func:       Task2,
            },
            {
                Name:       "第3图",
                SleepTime1: 1,
                SleepTime2: 1,
                Func:       Task3,
            },
            {
                Name:       "第4图",
                SleepTime1: 1500,
                SleepTime2: 80,
                Func:       Task4,
            },
            {
                Name:       "第5图",
                SleepTime1: 1500,
                SleepTime2: 80,
                Func:       Task5,
            },
            {
                Name:       "第6图",
                SleepTime1: 1500,
                SleepTime2: 80,
                Func:       Task6,
            },
            {
                Name:       "第7图",
                SleepTime1: 1500,
                SleepTime2: 80,
                Func:       Task7,
            },
        }

        for i := 1; i <= taskNum; i++ {
            task := tasks[i-1]
            fmt.Printf("开始执行任务:%s\n", task.Name)
            time.Sleep(time.Duration(task.SleepTime1) * time.Millisecond)
            time.Sleep(time.Duration(rand.Intn(task.SleepTime2)) * time.Millisecond)
            task.Func()
            fmt.Printf("任务%s已完成\n", task.Name)
        }

    }
}

func Task1() {
    robotgo.MoveClick(367, 270, `left`, true)
    time.Sleep(2000)
    robotgo.KeyTap("right")
    robotgo.MilliSleep(10)
    robotgo.KeyToggle("right", "down")
    time.Sleep(6 * time.Second)
    robotgo.KeyToggle("right", "up")
    time.Sleep(100)
    fmt.Printf("第1图通关,")
}

func Task2() {
    robotgo.KeyTap("s")
    time.Sleep(2 * time.Second)
    robotgo.KeyTap("a")
    robotgo.MilliSleep(20)

    //向下移动3秒向上移动1秒
    robotgo.KeyToggle("up", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("up", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyTap("g")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("w")

    time.Sleep(9 * time.Second)

    robotgo.KeyToggle("down", "down")
    time.Sleep(1 * time.Second)
    robotgo.KeyToggle("down", "up")
    robotgo.MilliSleep(50)
    fmt.Printf("第二图通关,")
}

func Task3() {
    robotgo.MilliSleep(50)
    robotgo.KeyTap("right")
    robotgo.MilliSleep(10)
    robotgo.KeyToggle("right", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("right", "up")
    fmt.Printf("进入第3图")

    robotgo.MilliSleep(50)
    robotgo.KeyTap("h")
    time.Sleep(3 * time.Second)
    time.Sleep(6 * time.Second)

    robotgo.KeyToggle("up", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("up", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyToggle("down", "down")
    time.Sleep(1 * time.Second)
    robotgo.KeyToggle("down", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyToggle("right", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("right", "up")
    robotgo.MilliSleep(50)

    fmt.Printf("第3通关")

}

func Task4() {
    robotgo.KeyTap("right")
    robotgo.MilliSleep(50)
    robotgo.KeyToggle("right", "down")
    time.Sleep(5 * time.Second)
    robotgo.KeyToggle("right", "up")
    robotgo.MilliSleep(50)

    time.Sleep(20 * time.Second)

    robotgo.KeyToggle("right", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("right", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyToggle("up", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("up", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyToggle("down", "down")
    time.Sleep(1 * time.Second)
    robotgo.KeyToggle("down", "up")
    robotgo.MilliSleep(50)

    fmt.Printf("第4图通关")
}

func Task5() {

    //向上移动1秒
    fmt.Print("****准备进入5图")

    //向上移动1秒
    robotgo.KeyTap("right")
    robotgo.MilliSleep(50)
    robotgo.KeyToggle("right", "down")
    time.Sleep(5 * time.Second)
    robotgo.KeyToggle("right", "up")
    robotgo.MilliSleep(50)
    time.Sleep(20 * time.Second)

    robotgo.KeyToggle("right", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("right", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyToggle("up", "down")
    time.Sleep(2 * time.Second)
    robotgo.KeyToggle("up", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyToggle("down", "down")
    time.Sleep(1 * time.Second)
    robotgo.KeyToggle("down", "up")
    robotgo.MilliSleep(50)

    fmt.Printf("第5图通关")
}

func Task6() {
    fmt.Print("****准备进入6图")
    robotgo.KeyTap("right")
    robotgo.MilliSleep(50)
    robotgo.KeyToggle("right", "down")
    robotgo.KeyToggle("down", "down")
    time.Sleep(5 * time.Second)
    robotgo.KeyToggle("right", "up")
    robotgo.KeyToggle("down", "up")
    robotgo.MilliSleep(50)

    robotgo.KeyTap("w")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("a")
    fmt.Print("****进入6图")

    robotgo.KeyTap("w")
    time.Sleep(20 * time.Second)
    fmt.Printf("最后通关1")
    robotgo.KeyTap("w")
    time.Sleep(30 * time.Second)
    fmt.Printf("最后通关2")
    robotgo.KeyTap("w")
    time.Sleep(20 * time.Second)


    fmt.Printf("全图通关")
}

func Task7() {
    fmt.Printf("开始捡完物品")

    robotgo.KeyTap("v")
    time.Sleep(3 * time.Second)

    //修装备
    //time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
    //robotgo.KeyTap("s")
    //time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
    //robotgo.KeyTap("s")
    //time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
    //robotgo.KeyTap("enter")
    //time.Sleep(1 * time.Second)

    //捡东西
    time.Sleep(3 * time.Second)
    fmt.Printf("第一个图捡完物品")

    robotgo.MilliSleep(2000)
    robotgo.MoveClick(10, 10, `left`, true)
    robotgo.MilliSleep(50)
    robotgo.MoveClick(10, 10, `left`, true)

    time.Sleep(2 * time.Second)
	robotgo.KeyTap("enter")
	time.Sleep(2 * time.Second)
	robotgo.KeyTap("shift")
    
    robotgo.MilliSleep(50)
    robotgo.KeyTap("/")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("/")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("shift")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("y")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("i")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("d")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("o")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("n")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("g")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("w")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("u")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("p")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("i")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("n")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("space")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("enter")
    robotgo.MilliSleep(50)
    time.Sleep(3 * time.Second)
    fmt.Printf("第一个图捡完物品")

    robotgo.MilliSleep(2000)
    robotgo.MoveClick(1377, 71, `left`, true)
    robotgo.MilliSleep(50)
    robotgo.MoveClick(1377, 71, `left`, true)
    robotgo.MilliSleep(50)
    robotgo.KeyTap("enter")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("shift")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("/")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("/")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("shift")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("y")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("i")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("d")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("o")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("n")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("g")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("w")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("u")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("p")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("i")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("n")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("space")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("enter")
    robotgo.MilliSleep(50)
    time.Sleep(3 * time.Second)

    robotgo.MilliSleep(50)
    robotgo.MoveClick(10, 10, `left`, true)
    robotgo.MilliSleep(100)

    robotgo.KeyTap("esc")
    time.Sleep(1 * time.Second)
    robotgo.KeyTap("f10")
    robotgo.MilliSleep(50)
    robotgo.KeyTap("f10")
    time.Sleep(3 * time.Second)
}

func randInt(min, max int) int {
    rand.Seed(time.Now().UnixNano())
    return rand.Intn(max-min+1) + min
}
相关推荐
为何创造硅基生物7 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好7 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
星寂樱易李7 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
仰泳之鹅7 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆7 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
姚不倒8 小时前
Go语言进阶:接口、错误处理与并发编程(goroutine/channel/context)
云原生·golang
candyTong8 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
cen__y9 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
AI人工智能+电脑小能手9 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
GetcharZp9 小时前
GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式
后端