Beispiel #1
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)
Beispiel #2
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)
Beispiel #3
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)
Beispiel #4
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)
Beispiel #5
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()