Skip to content

Instantly share code, notes, and snippets.

@svanellewee
Last active April 21, 2019 17:09
Show Gist options
  • Save svanellewee/d7d7c6b5438961538c38 to your computer and use it in GitHub Desktop.
Save svanellewee/d7d7c6b5438961538c38 to your computer and use it in GitHub Desktop.
Get a block to move with SDL2 and GoLang
package main
import (
"fmt"
"github.com/veandco/go-sdl2/sdl"
"os"
)
var winTitle string = "Go-SDL2 Events"
var winWidth, winHeight int = 800, 600
func main() {
var window *sdl.Window
var err error
if 0 != sdl.Init(sdl.INIT_EVERYTHING) {
panic(sdl.GetError())
}
defer sdl.Quit()
window,err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, winWidth, winHeight, sdl.WINDOW_SHOWN)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
os.Exit(1)
}
defer window.Destroy()
var renderer *sdl.Renderer
renderer,err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", err)
os.Exit(2)
}
defer renderer.Destroy()
renderer.SetDrawColor(0,255,0,255)
renderer.Clear()
var event sdl.Event
var running bool
rect := sdl.Rect{0, 0, 200, 50}
running = true
for running {
renderer.SetDrawColor(0,255,255,255)
renderer.FillRect(&rect)
renderer.Present()
for event = sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch t := event.(type) {
case *sdl.QuitEvent:
running = false
case *sdl.KeyUpEvent:
fmt.Printf("[%d ms] Keyboard\ttype:%d\tsym:%c\tmodifiers:%d\tstate:%d\trepeat:%d\n",
t.Timestamp, t.Type, t.Keysym.Sym, t.Keysym.Mod, t.State, t.Repeat)
rect.X+=10
}
}
renderer.SetDrawColor(255,0,0,255)
renderer.Clear()
}
//renderer.Destroy()
//window.Destroy()
//sdl.Quit()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment