123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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)
- }
|