package main import ( "github.com/go-vgo/robotgo" ) func main() { bmp, free := loadBitmaps("start.png", "chest.png", "eat.png") defer free() for { clickBitmap(bmp["start.png"], false) clickBitmap(bmp["chest.png"], true) clickBitmap(bmp["eat.png"], false) } } func loadBitmaps(files ...string) (bitmaps map[string]robotgo.Bitmap, free func()) { freeFuncs := make([]func(), 0) bitmaps = make(map[string]robotgo.Bitmap) for _, f := range files { bitmap, freeFunc := readBitmap(f) bitmaps[f] = bitmap freeFuncs = append(freeFuncs, freeFunc) } free = func() { for key := range freeFuncs { freeFuncs[key]() } } return bitmaps, free } func readBitmap(file string) (bitmap robotgo.Bitmap, free func()) { cBitmap := robotgo.OpenBitmap(file) bitmap = robotgo.ToBitmap(cBitmap) free = func() { robotgo.FreeBitmap(cBitmap) } return bitmap, free } func clickBitmap(bmp robotgo.Bitmap, doubleClick bool) bool { fx, fy := robotgo.FindBitmap(robotgo.ToCBitmap(bmp)) if fx != -1 && fy != -1 { robotgo.MoveMouse(fx, fy) robotgo.MouseClick("left", doubleClick) return true } return false }