/
main.go
72 lines (55 loc) · 1.32 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package main
import (
"github.com/veandco/go-sdl2/sdl"
"log"
"os"
"time"
)
var winTitle string = "Go Game"
var winWidth, winHeight int = 800, 600
func main() {
var window *sdl.Window
var renderer *sdl.Renderer
sdl.Init(sdl.INIT_EVERYTHING)
window = createWindow(winTitle, winHeight, winWidth)
defer window.Destroy()
renderer = createRenderer(window)
defer renderer.Destroy()
var secTickChan = time.Tick(time.Second)
var events = &Events{}
var fps = 0
var view = NewGameView()
for {
// Pump events
events.GetEvents()
// Pass events and renderer to view
view.Render(renderer, events)
// This structure logs the fps
select {
case <-secTickChan:
log.Println("fps:", fps)
fps = 0
default:
fps++
}
// Delay the next frame rendering to free up CPU
sdl.Delay(13)
}
}
func createWindow(title string, height int, width int) *sdl.Window {
window, err := sdl.CreateWindow(title, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
width, height, sdl.WINDOW_SHOWN)
if err != nil {
log.Println("Failed to create window, exiting")
os.Exit(1)
}
return window
}
func createRenderer(window *sdl.Window) *sdl.Renderer {
renderer, err := sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
log.Println("Failed to create renderer, exiting")
os.Exit(1)
}
return renderer
}