From 2964884563753442afacc5120c5970cc63e8e4d3 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Sun, 2 Mar 2025 18:02:06 +0100 Subject: [PATCH] extract paddle code --- main.go | 25 ++++--------------------- paddle.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 21 deletions(-) create mode 100644 paddle.go diff --git a/main.go b/main.go index 0da7b15..6652198 100644 --- a/main.go +++ b/main.go @@ -13,11 +13,8 @@ import ( const ( screenWidth = 640 screenHeight = 480 - paddleHeight = 12 - paddleWidth = 60 ballSize = 8 ballSpeed = 3 - paddleY = screenHeight - 40 ballStartY = screenHeight - 60 ) @@ -30,22 +27,13 @@ type Game struct { initialized bool } -type paddle struct { - x, y, width, height float64 -} - type ball struct { x, y, dx, dy, size float64 } func (g *Game) init() { // Initialize paddle - g.paddle = paddle{ - x: screenWidth/2 - paddleWidth/2, - y: paddleY, - width: paddleWidth, - height: paddleHeight, - } + g.paddle = newPaddle() // Initialize ball g.ball = ball{ @@ -77,19 +65,14 @@ func (g *Game) Update() error { // Update paddle position based on input if ebiten.IsKeyPressed(ebiten.KeyLeft) { - g.paddle.x -= paddleSpeed + g.paddle.moveLeft() } if ebiten.IsKeyPressed(ebiten.KeyRight) { - g.paddle.x += paddleSpeed + g.paddle.moveRight() } // Keep paddle within screen bounds - if g.paddle.x < 0 { - g.paddle.x = 0 - } - if g.paddle.x > screenWidth-g.paddle.width { - g.paddle.x = screenWidth - g.paddle.width - } + g.paddle.keepWithinBounds() // Update ball position g.ball.x += g.ball.dx diff --git a/paddle.go b/paddle.go new file mode 100644 index 0000000..c448853 --- /dev/null +++ b/paddle.go @@ -0,0 +1,38 @@ +package main + +const ( + paddleHeight = 12 + paddleWidth = 60 + paddleSpeed = 5 + paddleY = screenHeight - 40 +) + +func newPaddle() paddle { + return paddle{ + x: screenWidth/2 - paddleWidth/2, + y: paddleY, + width: paddleWidth, + height: paddleHeight, + } +} + +type paddle struct { + x, y, width, height float32 +} + +func (p *paddle) moveLeft() { + p.x -= paddleSpeed +} + +func (p *paddle) moveRight() { + p.x += paddleSpeed +} + +func (p *paddle) keepWithinBounds() { + if p.x < 0 { + p.x = 0 + } + if p.x > screenWidth-p.width { + p.x = screenWidth - p.width + } +}