mirror of
https://github.com/rjNemo/breakout
synced 2026-06-06 00:26:39 +00:00
extract paddle code
This commit is contained in:
parent
947936cf6c
commit
2964884563
2 changed files with 42 additions and 21 deletions
25
main.go
25
main.go
|
|
@ -13,11 +13,8 @@ import (
|
||||||
const (
|
const (
|
||||||
screenWidth = 640
|
screenWidth = 640
|
||||||
screenHeight = 480
|
screenHeight = 480
|
||||||
paddleHeight = 12
|
|
||||||
paddleWidth = 60
|
|
||||||
ballSize = 8
|
ballSize = 8
|
||||||
ballSpeed = 3
|
ballSpeed = 3
|
||||||
paddleY = screenHeight - 40
|
|
||||||
ballStartY = screenHeight - 60
|
ballStartY = screenHeight - 60
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -30,22 +27,13 @@ type Game struct {
|
||||||
initialized bool
|
initialized bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type paddle struct {
|
|
||||||
x, y, width, height float64
|
|
||||||
}
|
|
||||||
|
|
||||||
type ball struct {
|
type ball struct {
|
||||||
x, y, dx, dy, size float64
|
x, y, dx, dy, size float64
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Game) init() {
|
func (g *Game) init() {
|
||||||
// Initialize paddle
|
// Initialize paddle
|
||||||
g.paddle = paddle{
|
g.paddle = newPaddle()
|
||||||
x: screenWidth/2 - paddleWidth/2,
|
|
||||||
y: paddleY,
|
|
||||||
width: paddleWidth,
|
|
||||||
height: paddleHeight,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize ball
|
// Initialize ball
|
||||||
g.ball = ball{
|
g.ball = ball{
|
||||||
|
|
@ -77,19 +65,14 @@ func (g *Game) Update() error {
|
||||||
|
|
||||||
// Update paddle position based on input
|
// Update paddle position based on input
|
||||||
if ebiten.IsKeyPressed(ebiten.KeyLeft) {
|
if ebiten.IsKeyPressed(ebiten.KeyLeft) {
|
||||||
g.paddle.x -= paddleSpeed
|
g.paddle.moveLeft()
|
||||||
}
|
}
|
||||||
if ebiten.IsKeyPressed(ebiten.KeyRight) {
|
if ebiten.IsKeyPressed(ebiten.KeyRight) {
|
||||||
g.paddle.x += paddleSpeed
|
g.paddle.moveRight()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep paddle within screen bounds
|
// Keep paddle within screen bounds
|
||||||
if g.paddle.x < 0 {
|
g.paddle.keepWithinBounds()
|
||||||
g.paddle.x = 0
|
|
||||||
}
|
|
||||||
if g.paddle.x > screenWidth-g.paddle.width {
|
|
||||||
g.paddle.x = screenWidth - g.paddle.width
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update ball position
|
// Update ball position
|
||||||
g.ball.x += g.ball.dx
|
g.ball.x += g.ball.dx
|
||||||
|
|
|
||||||
38
paddle.go
Normal file
38
paddle.go
Normal file
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue