diff --git a/animationMario.go b/animationMario.go index 18cc1a1..9242f74 100644 --- a/animationMario.go +++ b/animationMario.go @@ -68,6 +68,14 @@ func (a *Animation) updateMarioPosition() { marioX += centerX marioY += centerY + // Check for edge collision and change direction if necessary + if marioX < 0 || marioX >= a.ctx.Width() { + a.mario.angle = -a.mario.angle + } + if marioY < 0 || marioY >= a.ctx.Height() { + a.mario.angle = math.Pi + (math.Pi - a.mario.angle) + } + a.mario.position.X = marioX a.mario.position.Y = marioY @@ -77,16 +85,15 @@ func (a *Animation) updateMarioPosition() { a.mario.angle -= 2 * math.Pi } - // Direction logic + // Direction logic for up and down movement if math.Sin(t) > 0 { a.mario.dir.X = -1 // Moving left } else { a.mario.dir.X = 1 // Moving right } - if math.Cos(t) > 0 { - a.mario.updown = "marioUp" // Moving downward + a.mario.updown = "marioDown" // Moving downward } else { - a.mario.updown = "marioDown" // Moving upward + a.mario.updown = "marioUp" // Moving upward } } diff --git a/board.go b/board.go index 48cc7c8..7a46b29 100644 --- a/board.go +++ b/board.go @@ -40,8 +40,8 @@ func animate(sz image.Point, mqMessages chan mqtt.Message) *Animation { images: initialMap(), updown: "marioUp", dir: image.Point{1, 1}, - a: 32, - b: 24, + a: 30, + b: 15, }, } }