summaryrefslogtreecommitdiffstats
path: root/pongo.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-09-05 21:40:11 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-09-05 21:40:11 -0700
commitbd770946746827f3e6341a0e11d4995b4ece2d39 (patch)
tree46d2f21361fd2cbb6e602ee51d276e41eee58441 /pongo.go
parent21150cdcfbe60872c5f437f694a4916b826f41ed (diff)
downloadpongo-bd770946746827f3e6341a0e11d4995b4ece2d39.tar.zst
Add some redundant keybinds.
If I make the key bindings intuitive enough, there's no need for documentation right?
Diffstat (limited to 'pongo.go')
-rw-r--r--pongo.go17
1 files changed, 8 insertions, 9 deletions
diff --git a/pongo.go b/pongo.go
index 4ac9c40..fe11451 100644
--- a/pongo.go
+++ b/pongo.go
@@ -19,6 +19,10 @@ const (
paddleSpeed = 5
)
+func keyPressed(key sdl.Keycode) bool {
+ return sdl.GetKeyboardState()[sdl.GetScancodeFromKey(key)] != 0
+}
+
func rectRight(r *sdl.FRect) float32 {
return r.X + r.W
}
@@ -140,9 +144,6 @@ func pong() error {
defer window.Destroy()
defer renderer.Destroy()
- upPressed := false
- downPressed := false
-
playerScore := 0
aiScore := 0
@@ -164,10 +165,8 @@ func pong() error {
return nil
case *sdl.KeyboardEvent:
switch t.Keysym.Sym {
- case sdl.K_UP:
- upPressed = t.State == sdl.PRESSED
- case sdl.K_DOWN:
- downPressed = t.State == sdl.PRESSED
+ case sdl.K_q, sdl.K_c, sdl.K_ESCAPE:
+ return nil
}
}
}
@@ -178,9 +177,9 @@ func pong() error {
const simulationSpeed = time.Second / 120
for ; accumulator >= simulationSpeed; accumulator -= simulationSpeed {
switch {
- case upPressed && paddle1.bounds().Y >= 0:
+ case (keyPressed(sdl.K_UP) || keyPressed(sdl.K_w)) && paddle1.bounds().Y >= 0:
paddle1.pos -= paddleSpeed
- case downPressed && rectBottom(paddle1.bounds()) <= screenHeight:
+ case (keyPressed(sdl.K_DOWN) || keyPressed(sdl.K_s)) && rectBottom(paddle1.bounds()) <= screenHeight:
paddle1.pos += paddleSpeed
}