def searchFieldByQuad(player): """ Search the field quadrant by quadrant. Choose first quadrant by loc heading. """ if player.firstFrame(): player.brain.tracker.trackBall() player.brain.tracker.repeatBasicPan() searchFieldByQuad.dest = min( points, key=lambda x: fabs(player.brain.loc.distTo(x))) player.brain.nav.goTo(searchFieldByQuad.dest, precision=nav.GRAINY, speed=nav.QUICK_SPEED, avoidObstacles=True, fast=True, pb=False) searchFieldByQuad.quadIndex = points.index(searchFieldByQuad.dest) searchFieldByQuad.quadsWalked = 0 if shared.navAtPosition(player) and player.brain.loc.distTo( searchFieldByQuad.dest) < 60: searchFieldByQuad.quadIndex += 1 searchFieldByQuad.quadsWalked += 1 searchFieldByQuad.dest = points[searchFieldByQuad.quadIndex % len(points)] if searchFieldByQuad.quadsWalked > 3: return player.goLater('playOffBall') player.brain.nav.updateDest(searchFieldByQuad.dest)
def playerFiveSearchBehavior(player): if player.firstFrame(): player.brain.tracker.trackBall() if playerFiveSearchBehavior.pointIndex == -1: playerFiveSearchBehavior.dest = min(playerFivePoints, key = lambda x:fabs(player.brain.loc.distTo(x))) playerFiveSearchBehavior.pointIndex = playerFivePoints.index(playerFiveSearchBehavior.dest) playerFiveSearchBehavior.pointsWalked = 0 else: playerFiveSearchBehavior.pointIndex += 1 playerFiveSearchBehavior.pointsWalked += 1 playerFiveSearchBehavior.dest = playerFivePoints[playerFiveSearchBehavior.pointIndex % len(playerFivePoints)] player.brain.nav.goTo(playerFiveSearchBehavior.dest, precision = nav.HOME, speed = speeds.SPEED_SEVEN, avoidObstacles = True, fast = True, pb = False) if shared.navAtPosition(player) and player.brain.loc.distTo(playerFiveSearchBehavior.dest) < 60: if playerFiveSearchBehavior.pointIndex % len(playerFivePoints) == 0: adjustHeading.desiredHeading = role.strikerRightHome.h return player.goNow("adjustHeading") elif playerFiveSearchBehavior.pointIndex % len(playerFivePoints) == 2: adjustHeading.desiredHeading = role.strikerLeftHome.h return player.goNow("adjustHeading") else: return player.goNow("spinAtWayPoint") player.brain.nav.updateDest(playerFiveSearchBehavior.dest)
def chaseAfterBall(player): if player.firstFrame(): player.brain.tracker.repeatHeadMove(HeadMoves.FAST_TWO_INTERVAL) dest = RelRobotLocation(150, 0, 0) # player.brain.nav.goTo(dest, precision = nav.PLAYBOOK, # speed = speeds.SPEED_SEVEN, avoidObstacles = True, # fast = True, pb = False) // Maybe try something like this player.brain.nav.destinationWalkTo(RelRobotLocation(player.brain.ball.x, player.brain.ball.y, 0)) # print(" CHASEAFTERBALL I'm dest walking to:", player.brain.ball.x, player.brain.ball.y) return player.stay() if transitions.shouldChaseBall(player): print "I can see the ball!" afterKick.numTimes = 0 return player.goNow('approachBall') if shared.walkingOffField(player): print "I'm walking off the field!" afterKick.numTimes = 0 return player.goNow('spinSearch') if shared.navAtPosition(player) or player.counter > 100: return player.goNow('lookAroundForBall') return player.stay()
def searchFieldByQuad(player): """ Search the field quadrant by quadrant. Choose first quadrant by loc heading. """ if player.firstFrame(): player.brain.tracker.trackBall() searchFieldByQuad.dest = min(points, key=lambda x:fabs(player.brain.loc.getRelativeBearing(x))) player.brain.nav.goTo(searchFieldByQuad.dest, precision = nav.GRAINY, speed = nav.QUICK_SPEED, avoidObstacles = True, fast = True, pb = False) if shared.navAtPosition(player): if searchFieldByQuad.dest == quad1Center: searchFieldByQuad.dest = quad2Center elif searchFieldByQuad.dest == quad3Center: searchFieldByQuad.dest = quad1Center elif searchFieldByQuad.dest == quad2Center: searchFieldByQuad.dest = quad4Center elif searchFieldByQuad.dest == quad4Center: searchFieldByQuad.dest = quad3Center player.brain.nav.updateDest(searchFieldByQuad.dest)
def searchFieldByQuad(player): """ Search the field quadrant by quadrant. Choose first quadrant by loc heading. """ if player.firstFrame(): player.brain.tracker.trackBall() player.brain.tracker.repeatBasicPan() searchFieldByQuad.dest = min(points, key=lambda x:fabs(player.brain.loc.distTo(x))) player.brain.nav.goTo(searchFieldByQuad.dest, precision = nav.GRAINY, speed = nav.QUICK_SPEED, avoidObstacles = True, fast = True, pb = False) searchFieldByQuad.quadIndex = points.index(searchFieldByQuad.dest) searchFieldByQuad.quadsWalked = 0 if shared.navAtPosition(player) and player.brain.loc.distTo(searchFieldByQuad.dest) < 60: searchFieldByQuad.quadIndex += 1 searchFieldByQuad.quadsWalked += 1 searchFieldByQuad.dest = points[searchFieldByQuad.quadIndex % len(points)] if searchFieldByQuad.quadsWalked > 3: return player.goLater('playOffBall') player.brain.nav.updateDest(searchFieldByQuad.dest)
def shouldNotBeSupporter(player): if role.isChaser(player.role): return shared.ballOffForNFrames(120)(player) return not shouldBeSupporter(player)
def shouldNotBeSupporter(player): if role.isChaser(player.role): return shared.ballOffForNFrames(120) return not shouldBeSupporter(player)
player.brain.nav.updateDest(home) @superState('playOffBall') @stay @ifSwitchNow(transitions.tooFarFromHome(20), 'positionAtHome') def watchForBall(player): """ The player is at home, waiting for the ball to be within it's box (range) """ if player.firstFrame(): player.brain.nav.stand() @superState('playOffBall') @stay @ifSwitchLater(shared.ballOffForNFrames(120), 'playOffBall') def positionAsSupporter(player): if (role.isChaser(player.role) and role.isChaser(player.roleOfClaimer) and player.brain.ball.distance > hypot(CHASER_DISTANCE, CHASER_DISTANCE)): fast = True else: fast = False positionAsSupporter.position = getSupporterPosition(player, player.role) # TODO don't call goTo every frame player.brain.nav.goTo(positionAsSupporter.position, precision = nav.GENERAL_AREA, speed = nav.QUICK_SPEED, avoidObstacles = True, fast = False, pb = False) @superState('playOffBall')
player.brain.nav.updateDest(home) @superState('playOffBall') @stay @ifSwitchNow(transitions.tooFarFromHome(20), 'positionAtHome') def watchForBall(player): """ The player is at home, waiting for the ball to be within it's box (range) """ if player.firstFrame(): player.brain.nav.stand() @superState('playOffBall') @stay @ifSwitchLater(shared.ballOffForNFrames(120), 'playOffBall') def positionAsSupporter(player): if (role.isChaser(player.role) and role.isChaser(player.roleOfClaimer) and player.brain.ball.distance > hypot(CHASER_DISTANCE, CHASER_DISTANCE)): fast = True else: fast = False positionAsSupporter.position = getSupporterPosition(player, player.role) if player.firstFrame(): player.brain.nav.goTo(positionAsSupporter.position, precision = nav.GENERAL_AREA, speed = nav.QUICK_SPEED, avoidObstacles = True, fast = False, pb = False) player.brain.nav.updateDest(positionAsSupporter.position, fast=fast)