diff --git a/robot.go b/robot.go index 9c69c3f..667b5da 100644 --- a/robot.go +++ b/robot.go @@ -12,7 +12,8 @@ import ( ) const maxSpeed = 100 -const safeDistance = 20 +const safeDistance = 40 +const maxSearchIterations = 20 func connect(server string, port int) (*websocket.Conn, error) { origin := "http://localhost/" @@ -136,7 +137,6 @@ func (r *robot) play() { if len(r.boardstate.MyRobots) > 0 { r.me = r.boardstate.MyRobots[0] } else { - // XXX log.Println("continue") continue } @@ -178,7 +178,7 @@ func (r *robot) recon() { } } if r.nearestEnemy != nil { - point := r.nearestEnemy.Position.Add(r.nearestEnemy.Heading.Scale(20)) + point := r.nearestEnemy.Position.Add(r.nearestEnemy.Heading.Scale(safeDistance)) r.fireat = &point } } @@ -193,7 +193,7 @@ func (r *robot) selectDirection() *govector.Point2d { func (r *robot) probe(destination govector.Point2d) bool { // XXX: make test for this - for i := 0; i < 20; i++ { + for i := 0; i < maxSearchIterations; i++ { for _, v := range r.knownObstacles { collided, _, _ := govector.RectIntersection( v.Bounds, @@ -225,10 +225,10 @@ func (r *robot) navigate() { return } togo := r.me.Position.Sub(*r.moveto).Mag() - if togo < 20.0 { + if togo < safeDistance { r.moveto = r.selectDirection() } - if !r.probe(r.me.Position.Add(r.me.Heading.Scale(80))) { + if !r.probe(r.me.Position.Add(r.me.Heading.Scale(safeDistance))) { r.speed = 0 if !r.probe(*r.moveto) { r.moveto = r.selectDirection()