summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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
}