Example #1
0
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)
Example #2
0
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)
Example #3
0
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()
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #8
0
    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')
Example #9
0
    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)