summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-09-05 22:10:35 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-09-05 22:10:35 -0700
commitb7b863cdf008348806d6bcdc5724c6c55b3575fb (patch)
tree7c08110fa3379014e8ae29a7009aca0084cf0fc9
parent242a9d026e2f6ef0f820ecff3a2bb669800dc5d0 (diff)
downloadpongo-b7b863cdf008348806d6bcdc5724c6c55b3575fb.tar.zst
Enable vsync.
-rw-r--r--pongo.go23
1 files changed, 13 insertions, 10 deletions
diff --git a/pongo.go b/pongo.go
index 122044d..1c612c8 100644
--- a/pongo.go
+++ b/pongo.go
@@ -15,8 +15,9 @@ const (
screenWidth = 1920
screenHeight = 1080
- ballSpeed = 5
- paddleSpeed = 5
+ ticksPerSecond = 300
+ ballSpeed = 10 * 60 / ticksPerSecond
+ paddleSpeed = 10 * 60 / ticksPerSecond
)
// Imagine a digital clock. Do they still make those?
@@ -180,11 +181,15 @@ func pong() error {
}
defer ping.Free()
- window, renderer, err := sdl.CreateWindowAndRenderer(screenWidth, screenHeight, sdl.WINDOW_BORDERLESS)
+ window, err := sdl.CreateWindow("pong", sdl.WINDOWPOS_CENTERED, sdl.WINDOWPOS_CENTERED, screenWidth, screenHeight, sdl.WINDOW_BORDERLESS)
if err != nil {
return err
}
defer window.Destroy()
+ renderer, err := sdl.CreateRenderer(window, -1, sdl.RENDERER_PRESENTVSYNC)
+ if err != nil {
+ return err
+ }
defer renderer.Destroy()
playerScore := 0
@@ -204,9 +209,7 @@ func pong() error {
lastFrameTime := time.Now()
accumulator := time.Duration(0)
- renderRate := time.NewTicker(time.Second / 60)
- defer renderRate.Stop()
- for frameStart := range renderRate.C {
+ for {
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch t := event.(type) {
case *sdl.QuitEvent:
@@ -224,11 +227,12 @@ func pong() error {
}
}
- frameTime := frameStart.Sub(lastFrameTime)
- lastFrameTime = frameStart
+ now := time.Now()
+ frameTime := now.Sub(lastFrameTime)
+ lastFrameTime = now
accumulator += frameTime
- const simulationSpeed = time.Second / 120
+ const simulationSpeed = time.Second / ticksPerSecond
for ; accumulator >= simulationSpeed; accumulator -= simulationSpeed {
switch {
case (keyPressed(sdl.K_UP) || keyPressed(sdl.K_w)) && paddle1.bounds().Y >= 0:
@@ -339,7 +343,6 @@ func pong() error {
renderer.Present()
}
- panic("unreachable")
}
func main() {