summaryrefslogtreecommitdiffstats
path: root/pongo.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-09-05 21:57:50 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-09-05 21:57:50 -0700
commit91ee18009ff61c23b6f3743eadbded7395a7e248 (patch)
tree687d20b1c3c2fb50528bb042b5c07648fd205d3a /pongo.go
parentAdd some redundant keybinds. (diff)
downloadpongo-91ee18009ff61c23b6f3743eadbded7395a7e248.tar.zst
Inline the numbers package.
Diffstat (limited to 'pongo.go')
-rw-r--r--pongo.go49
1 files changed, 46 insertions, 3 deletions
diff --git a/pongo.go b/pongo.go
index fe11451..984bf58 100644
--- a/pongo.go
+++ b/pongo.go
@@ -5,9 +5,9 @@ import (
"fmt"
"github.com/veandco/go-sdl2/mix"
"github.com/veandco/go-sdl2/sdl"
- "gitlab.com/rhogenson/pongo/numbers"
"math"
"os"
+ "strconv"
"time"
)
@@ -19,6 +19,49 @@ const (
paddleSpeed = 5
)
+// Imagine a digital clock. Do they still make those?
+var digitSegments = []uint8{0x77, 0x24, 0x5d, 0x6d, 0x2e, 0x6b, 0x7b, 0x25, 0x7f, 0x6f}
+
+func drawNumber(renderer *sdl.Renderer, n int, x, y int32) error {
+ const (
+ width = 60
+ height = 100
+ thickness = 10
+ padding = 20
+ )
+
+ for _, d := range strconv.Itoa(n) {
+ segments := digitSegments[d-'0']
+ for i := range 7 {
+ if segments&(1<<i) == 0 {
+ continue
+ }
+ var r *sdl.Rect
+ switch i {
+ case 0:
+ r = &sdl.Rect{X: x, Y: y, W: width, H: thickness}
+ case 1:
+ r = &sdl.Rect{X: x, Y: y, W: thickness, H: height / 2}
+ case 2:
+ r = &sdl.Rect{X: x + width - thickness, Y: y, W: thickness, H: height / 2}
+ case 3:
+ r = &sdl.Rect{X: x, Y: y + height/2 - thickness/2, W: width, H: thickness}
+ case 4:
+ r = &sdl.Rect{X: x, Y: y + height/2, W: thickness, H: height / 2}
+ case 5:
+ r = &sdl.Rect{X: x + width - thickness, Y: y + height/2, W: thickness, H: height / 2}
+ case 6:
+ r = &sdl.Rect{X: x, Y: y + height - thickness, W: width, H: thickness}
+ }
+ if err := renderer.FillRect(r); err != nil {
+ return err
+ }
+ }
+ x += width + padding
+ }
+ return nil
+}
+
func keyPressed(key sdl.Keycode) bool {
return sdl.GetKeyboardState()[sdl.GetScancodeFromKey(key)] != 0
}
@@ -263,10 +306,10 @@ func pong() error {
fmt.Fprintln(os.Stderr, err)
}
- if err := numbers.Draw(renderer, playerScore, 150, 30); err != nil {
+ if err := drawNumber(renderer, playerScore, 150, 30); err != nil {
fmt.Fprintln(os.Stderr, err)
}
- if err := numbers.Draw(renderer, aiScore, 1300, 30); err != nil {
+ if err := drawNumber(renderer, aiScore, 1300, 30); err != nil {
fmt.Fprintln(os.Stderr, err)
}