package main import ( "image" "os" "time" _ "image/png" "github.com/faiface/pixel" "github.com/faiface/pixel/pixelgl" "golang.org/x/image/colornames" ) func loadPicture(path string) (pixel.Picture, error) { file, err := os.Open(path) if err != nil { return nil, err } defer file.Close() img, _, err := image.Decode(file) if err != nil { return nil, err } return pixel.PictureDataFromImage(img), nil } func run() { cfg := pixelgl.WindowConfig{ Title: "Pixel Rocks!", Bounds: pixel.R(0, 0, 1024, 768), VSync: true, } win, err := pixelgl.NewWindow(cfg) if err != nil { panic(err) } win.SetSmooth(true) pic, err := loadPicture("../hiking.png") if err != nil { panic(err) } sprite := pixel.NewSprite(pic, pic.Bounds()) angle := 0.0 scale := pixel.Vec{1.0, 1.0} last := time.Now() for !win.Closed() { dt := time.Since(last).Seconds() last = time.Now() angle += 3 * dt win.Clear(colornames.Firebrick) mat := pixel.IM mat = mat.ScaledXY(pixel.ZV, scale) mat = mat.Rotated(pixel.ZV, angle) mat = mat.Moved(win.Bounds().Center()) scale.X -= dt if scale.X <= 0.0 { scale.X = 1 } scale.Y -= dt if scale.Y <= 0.0 { scale.Y = 1 } sprite.Draw(win, mat) win.Update() } } func main() { pixelgl.Run(run) }