From 8ea76d27ca627c6b6a75edacc47303e1490a7f9e Mon Sep 17 00:00:00 2001 From: silva guimaraes Date: Sat, 22 Jul 2023 18:02:15 -0300 Subject: [PATCH] =?UTF-8?q?implementar=20padro=CC=83es=20de=20movimentos?= =?UTF-8?q?=20diferentes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 11ca361..b8d4ee5 100644 --- a/main.go +++ b/main.go @@ -39,8 +39,8 @@ type player struct { type enemy struct { pos rl.Vector2 health int - movePattern movementPattern - shootPattern shootingPattern + movePattern func(*enemy)rl.Vector2 + shootPattern func() } func (g game) insideArena(v rl.Vector2) bool { @@ -74,9 +74,29 @@ func (e *enemy) shoot(g *game) { }) } +func horizonalPattern(g *game) (func(*enemy)rl.Vector2) { + direction := rl.Vector2{X: 4, Y: 0} + + return func(e *enemy) rl.Vector2 { + result := rl.Vector2Add(direction, e.pos) + + if !g.insideArena(result) { + direction = rl.Vector2Negate(direction) + } + return result + } +} + + func (e *enemy) update(g *game) { - rl.DrawCircleV(e.pos, 5, rl.Blue) + + if e.movePattern != nil { + e.pos = e.movePattern(e) + } + e.shoot(g) + + rl.DrawCircleV(e.pos, 5, rl.Blue) } func (p *player) move() { @@ -87,6 +107,10 @@ func (p *player) move() { } func (p *player) shoot(g *game){ + if g.time % 10 != 0 { + return + } + if rl.IsMouseButtonDown(rl.MouseLeftButton) { // não leva em consideração a velocidade do jogador mouse := rl.GetMousePosition() @@ -154,14 +178,17 @@ func main() { state.enemies = append(state.enemies, &enemy{ pos: rl.Vector2{X: 200, Y: 200}, health: 10, + movePattern: horizonalPattern(state), }) state.enemies = append(state.enemies, &enemy{ pos: rl.Vector2{X: 169, Y: 222}, health: 10, + movePattern: horizonalPattern(state), }) state.enemies = append(state.enemies, &enemy{ pos: rl.Vector2{X: 219, Y: 195}, health: 10, + movePattern: horizonalPattern(state), }) for ; !rl.WindowShouldClose(); state.time += 1 {