diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2024-09-05 22:04:53 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2024-09-05 22:04:53 -0700 |
| commit | 242a9d026e2f6ef0f820ecff3a2bb669800dc5d0 (patch) | |
| tree | 1dfbe7c1e8a1f900c90c0d874f1fdc2d4e677542 /pongo.go | |
| parent | Inline the numbers package. (diff) | |
| download | pongo-242a9d026e2f6ef0f820ecff3a2bb669800dc5d0.tar.zst | |
Show FPS when the F key is pressed.
Diffstat (limited to 'pongo.go')
| -rw-r--r-- | pongo.go | 26 |
1 files changed, 25 insertions, 1 deletions
@@ -196,6 +196,11 @@ func pong() error { paddle1 := paddle{pos: screenHeight / 2, side: left} paddle2 := paddle{pos: screenHeight / 2, side: right} + fpsTime := time.Duration(0) + frames := 0 + fps := 0 + showFPS := false + lastFrameTime := time.Now() accumulator := time.Duration(0) @@ -207,15 +212,21 @@ func pong() error { case *sdl.QuitEvent: return nil case *sdl.KeyboardEvent: + if t.Type != sdl.KEYDOWN { + continue + } switch t.Keysym.Sym { case sdl.K_q, sdl.K_c, sdl.K_ESCAPE: return nil + case sdl.K_f: + showFPS = !showFPS } } } - accumulator += frameStart.Sub(lastFrameTime) + frameTime := frameStart.Sub(lastFrameTime) lastFrameTime = frameStart + accumulator += frameTime const simulationSpeed = time.Second / 120 for ; accumulator >= simulationSpeed; accumulator -= simulationSpeed { @@ -313,6 +324,19 @@ func pong() error { fmt.Fprintln(os.Stderr, err) } + fpsTime += frameTime + frames++ + if fpsTime >= 5*time.Second { + fps = (frames*int(time.Second) + int(fpsTime)/2) / int(fpsTime) + fpsTime = 0 + frames = 0 + } + if showFPS { + if err := drawNumber(renderer, fps, 0, 0); err != nil { + fmt.Fprintln(os.Stderr, err) + } + } + renderer.Present() } panic("unreachable") |
