Beispiel #1
0
def positionForDribble(player):
    """
    We should position ourselves behind the ball for easy dribbling.
    """
    if transitions.ballToOurLeft(player):
        player.kick = kicks.LEFT_DRIBBLE
    else:
        player.kick = kicks.RIGHT_DRIBBLE

    ball = player.brain.ball
    kick_pos = player.kick.getPosition()
    player.kickPose = RelRobotLocation(ball.rel_x + constants.SETUP_POSITION,
                                       ball.rel_y - kick_pos[1],
                                       0)

    if player.firstFrame():
        player.brain.nav.goTo(player.kickPose,
                              Navigator.GENERAL_AREA,
                              Navigator.MEDIUM_SPEED,
                              False,
                              False)
    else:
        player.brain.nav.updateDest(player.kickPose)

    if player.corner_dribble:
        if transitions.ballLost(player) or transitions.ballGotFarAway(player):
            player.corner_dribble = False
            return player.goLater('approachBall')
        elif transitions.navDone(player):
            return player.goLater('executeDribble')
    else:
        if transitions.ballLost(player):
            return player.goLater('lookForBall')
        elif not transitions.shouldDribble(player):
            player.inKickingState = False
            player.stand()
            return player.goLater('approachBall')
        elif player.aboutToRotate and transitions.navDone(player):
            player.aboutToRotate = False
            return player.goLater('rotateToOpenSpace')
        elif transitions.navDone(player):
            return player.goLater('decideDribble')

    return player.stay()
Beispiel #2
0
def positionForDribble(player):
    """
    We should position ourselves behind the ball for easy dribbling.
    """
    if transitions.ballToOurLeft(player):
        player.kick = kicks.LEFT_DRIBBLE
    else:
        player.kick = kicks.RIGHT_DRIBBLE

    ball = player.brain.ball
    kick_pos = player.kick.getPosition()
    player.kickPose = RelRobotLocation(ball.rel_x + constants.SETUP_POSITION,
                                       ball.rel_y - kick_pos[1], 0)

    if player.firstFrame():
        player.brain.nav.goTo(player.kickPose, Navigator.GENERAL_AREA,
                              Navigator.MEDIUM_SPEED, False, False)
    else:
        player.brain.nav.updateDest(player.kickPose)

    if player.corner_dribble:
        if transitions.ballLost(player) or transitions.ballGotFarAway(player):
            player.corner_dribble = False
            return player.goLater('chase')
        elif transitions.navDone(player):
            return player.goLater('executeDribble')
    else:
        if transitions.ballLost(player):
            return player.goLater('lookForBall')
        elif not transitions.shouldDribble(player):
            player.inKickingState = False
            player.stand()
            return player.goLater('chase')
        elif player.aboutToRotate and transitions.navDone(player):
            player.aboutToRotate = False
            return player.goLater('rotateToOpenSpace')
        elif transitions.navDone(player):
            return player.goLater('decideDribble')

    return player.stay()