Exemple #1
0
    def __init__(self, name):
        super(IndirectAction, self).__init__(name)

        limitTime = 30.0
        # limitTime = 7.0
        timerName = "SuccessTimer" + str(limitTime)
        TIMER = BaseSkill.SuccessTimer(timerName, limitTime)

        ACTION_SELECTOR = Selector("ACTION_SELECTOR")
        DO_PASS_SHOOT = Sequence("DO_PASS_SHOOT")
        DO_PASS_SHOOT.add_child(Analyst.BallIsEnemySide("BallIsEnemySide"))
        DO_PASS_SHOOT.add_child(Analyst.ThereAreThreeRobots("ThreeRobots"))
        DO_PASS_SHOOT.add_child(ComboSkill.PassShoot("PassShoot", 2, 1))

        ACTION_SELECTOR.add_child(DO_PASS_SHOOT)

        DO_SHOOT = ParallelOne("DO_SHOOT")
        DO_SHOOT.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 1))
        DO_SHOOT.add_child(Kick.SetplayShoot("Shoot", 1))
        DO_SHOOT.add_child(Defender.Defense("DefenderDefense", 2))

        ACTION_SELECTOR.add_child(DO_SHOOT)

        self.add_child(TIMER)
        self.add_child(ACTION_SELECTOR)
        self.add_child(GoalKeeper.Defense("GoalKeeperDefense", 0))
Exemple #2
0
def playGameMode():
    resetEachFrame()

    shouldIStartDefend = Defender.shouldIStartDefend()
    shouldIEndDefend = Defender.shouldIEndDefend()
    shouldIStrike = Striker.shouldIBecomeStriker()
    shouldIBackOff = BackOff.shouldIVisualBackOff()
    shouldISupport = Supporter.ShouldIBecomeSupporter()

    headFlag = True

    if Attacker.lockMode:
        print "Entering Lock Mode for Attacker!!!"
        Attacker.DecideNextAction()
        headFlag = False  # for grab/turn/kick
        IndicatorAction.showHeadColor((True, True, False))

    elif Edger.lockMode:
        Edger.DecideNextAction()
        headFlag = False
        IndicatorAction.showHeadColor((False, True, False))

    elif ((shouldIStartDefend or Defender.lockDefender) and \
        not shouldIEndDefend):
        Global.myRole = Constant.DEFENDER
        Defender.DecideNextAction()
        IndicatorAction.showHeadColor((True, False, False))

    elif shouldIStrike:
        Striker.DecideNextAction()
        IndicatorAction.showHeadColor((False, False, True))

    elif shouldIBackOff:
        BackOff.DecideNextAction()
        IndicatorAction.showHeadColor((False, True, True))

    elif shouldISupport:
        Supporter.DecideNextAction()
        IndicatorAction.showHeadColor((True, False, True))

    elif Edger.shouldIBecomeEdger():
        Edger.DecideNextAction()
        headFlag = False
        IndicatorAction.showHeadColor((False, True, False))

    else:
        Attacker.DecideNextAction()
        IndicatorAction.showHeadColor((True, True, False))

        if BackOff.shouldISideBackOff():
            Global.myRole = Constant.SIDEBACKOFF
            Global.finalAction[Constant.AAForward] = \
                Global.finalAction[Constant.AAForward] * 0.6
            IndicatorAction.showHeadColor((False, True, True))

    if headFlag:
        FWHead.DecideNextAction()

    if Kick.shouldIContinueKick():
        Kick.continueKick()
Exemple #3
0
    def __init__(self, name):
        super(ExeNormal_Pre, self).__init__(name)

        self.add_child(Analyst.ThereAreRobots("ThereAreRobots"))
        self.add_child(GoalKeeper.StopGame("GoalKeeperStop", 0))
        self.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 1))
        self.add_child(Kick.Approach("Approach", 1))
        self.add_child(Defender.StopGame("DefenderStop", 2))
Exemple #4
0
    def __init__(self, name, number):
        super(UltimateOffense, self).__init__(name)

        SHOOT_PARA = ParallelOne("SHOOT_PARA")
        SHOOT_PARA.add_child(Kick.CalcuKickTarget("calcu", number))
        SHOOT_PARA.add_child(Kick.Shoot("shoot", number))

        self.add_child(SHOOT_PARA)
Exemple #5
0
    def __init__(self, name):
        super(OneRobotDirectAction, self).__init__(name)

        limitTime = 7.0
        # limitTime = 12.0
        timerName = "SuccessTimer" + str(limitTime)
        TIMER = BaseSkill.SuccessTimer(timerName, limitTime)

        self.add_child(TIMER)

        self.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 0))
        self.add_child(Kick.SetplayShoot("Shoot", 0))
Exemple #6
0
    def __init__(self, name):
        super(OneRobotIndirectAction, self).__init__(name)

        # limitTime = 12.0
        limitTime = 7.0
        timerName = "SuccessTimer" + str(limitTime)
        TIMER = BaseSkill.SuccessTimer(timerName, limitTime)

        DO_SHOOT = ParallelOne("DO_SHOOT")
        DO_SHOOT.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 0))
        DO_SHOOT.add_child(Kick.SetplayShoot("Shoot", 0))

        self.add_child(TIMER)
        self.add_child(DO_SHOOT)
Exemple #7
0
def DecideNextAction():
    global lockMode

    Global.myRole = Constant.ATTACKER
    
    if GrabTurnKick.lockMode:
        GrabTurnKick.DecideNextAction()
        lockMode = True
        return

    lockMode = False

    if Global.ballY < Constant.FIELD_LENGTH/2:
        Forward.resetEachFrame()
        rAttacker.DecideNextAction()
        FWHead.DecideNextAction()        
        return

    me_x = Global.selfLoc.getX()
    me_y = Global.selfLoc.getY()
    #ballToGoalDist = HelpMath.getDistanceBetween( \
    #    Global.ballX, Global.ballY, \
    #    Constant.TARGET_GOAL_X, Constant.TARGET_GOAL_Y) 
    
    angleMeBallGoal = \
                    HelpMath.angleBetweenTwoPointsFromPivotPoint( \
            me_x, me_y, \
            Constant.TARGET_GOAL_X, Constant.TARGET_GOAL_Y, \
            Global.ballX, Global.ballY )

    distToGoal = HelpMath.getDistanceBetween(me_x, me_y,
                                             Constant.TARGET_GOAL_X,
                                             Constant.TARGET_GOAL_Y)


    MyTrack.DecideNextAction() # for head controlling

    if canDoKick() and distToGoal < 100:
        if isInRange(angleMeBallGoal, -KICK_MAX, -KICK_MIN):
            Kick.UPright()
        elif isInRange(angleMeBallGoal, KICK_MIN, KICK_MAX):
            Kick.UPleft()
    elif HelpTrack.inTargetGoalBox(Global.ballX, Global.ballY):
        # if ball in the goal box
        goalBoxKick(angleMeBallGoal)
    else:
        GrabTurnKick.DecideNextAction()
Exemple #8
0
    def __init__(self, name):
        super(KickoffExecute, self).__init__(name)

        SHOOT = Kick.SetplayShoot("Shoot", 1)
        INPLAY = InPlay.Execute("Execute inplay")

        self.add_child(SHOOT)
        self.add_child(INPLAY)
Exemple #9
0
    def __init__(self, name):
        super(DirectAction, self).__init__(name)

        limitTime = 7.0
        # limitTime = 12.0
        timerName = "SuccessTimer" + str(limitTime)
        TIMER = BaseSkill.SuccessTimer(timerName, limitTime)

        CALCU = Kick.CalcuKickTarget("CalcuKickTarget", 1)
        SHOOT = Kick.SetplayShoot("Shoot", 1)

        self.add_child(TIMER)
        self.add_child(CALCU)
        self.add_child(SHOOT)

        self.add_child(GoalKeeper.Defense("GoalKeeperDefense", 0))
        self.add_child(Defender.Defense("DefenderDefense", 2))
Exemple #10
0
    def __init__(self, name):
        super(ExeNormal_Shoot, self).__init__(name)

        self.add_child(Analyst.ThereAreRobots("ThereAreRobots"))

        SHOOT_ITERATOR = Iterator("SHOOT_ITERATOR")
        SHOOT_ITERATOR.add_child(Kick.SetplayShoot("Shoot", 1))
        SHOOT_ITERATOR.add_child(InPlay.Execute("Execute inplay"))
        self.add_child(SHOOT_ITERATOR)
Exemple #11
0
    def __init__(self, name):
        super(Execute, self).__init__(name)

        EXE_SELECTOR = Selector("EXE_SELECTOR")

        ONE_ROBOT = ParallelAll("ONE_ROBOT")
        ONE_ROBOT.add_child(Analyst.ThereIsOnlyOneRobot("ThereIsOneRobot"))
        ONE_ROBOT.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 0))
        ONE_ROBOT.add_child(Kick.SetplayShoot("Shoot", 0))
        EXE_SELECTOR.add_child(ONE_ROBOT)

        SOME_ROBOTS = ParallelAll("SOME_ROBOTS")
        SOME_ROBOTS.add_child(Analyst.ThereAreRobots("ThereAreRobots"))
        SOME_ROBOTS.add_child(GoalKeeper.StopGame("GoalKeeperStop", 0))
        SOME_ROBOTS.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 1))
        SOME_ROBOTS.add_child(Kick.SetplayShoot("Shoot", 1))
        SOME_ROBOTS.add_child(Defender.StopGame("DefenderStop", 2))
        EXE_SELECTOR.add_child(SOME_ROBOTS)

        self.add_child(IsNORMAL_START("IsNORMAL_START"))
        self.add_child(EXE_SELECTOR)
Exemple #12
0
    def __init__(self, name):
        super(Prepare, self).__init__(name)

        EXE_SELECTOR = Selector("EXE_SELECTOR")

        ONE_ROBOT = ParallelAll("ONE_ROBOT")
        ONE_ROBOT.add_child(Analyst.ThereIsOnlyOneRobot("ThereIsOneRobot"))
        ONE_ROBOT.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 0))
        ONE_ROBOT.add_child(Kick.Approach("Approach", 0))
        EXE_SELECTOR.add_child(ONE_ROBOT)

        SOME_ROBOTS = ParallelAll("SOME_ROBOTS")
        SOME_ROBOTS.add_child(Analyst.ThereAreRobots("ThereAreRobots"))
        SOME_ROBOTS.add_child(GoalKeeper.StopGame("GoalKeeperStop", 0))
        SOME_ROBOTS.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 1))
        SOME_ROBOTS.add_child(Kick.Approach("Approach", 1))
        SOME_ROBOTS.add_child(Defender.StopGame("DefenderStop", 2))
        EXE_SELECTOR.add_child(SOME_ROBOTS)

        self.add_child(IsPENALTY_FRIEND("IsPENALTY_FRIEND"))
        self.add_child(EXE_SELECTOR)
Exemple #13
0
def goalBoxKick(angleMeBallGoal):
    if not canDoKick():
        MyTrack.DecideNextAction()
    else:
        FACE_GOAL = 160
        if isInRange(angleMeBallGoal, -KICK_MIN, 0):
            rotateAboutBall(MyTrack.LEFT)
        elif isInRange(angleMeBallGoal, -KICK_MAX, -KICK_MIN):
            Kick.UPright()
        elif isInRange(angleMeBallGoal, -FACE_GOAL, -KICK_MAX):            
            rotateAboutBall(MyTrack.RIGHT)            
            
        elif isInRange(angleMeBallGoal, 0, KICK_MIN):
            rotateAboutBall(MyTrack.RIGHT)
        elif isInRange(angleMeBallGoal, KICK_MIN, KICK_MAX):
            Kick.UPleft()
        elif isInRange(angleMeBallGoal, KICK_MAX, FACE_GOAL):
            rotateAboutBall(MyTrack.LEFT)
        
        else: # if  < -FACE_GOAL or > FACE_GOAL
            WalkAction.setNormalWalk(5, 0, 0)
Exemple #14
0
    def __init__(self, name, passerNo, shooterNo):
        super(PassShoot, self).__init__(name)

        # 1 passerがボールに近づく
        FIRST = ParallelOne("FIRST")
        FIRST.add_child(
            Kick.SetPassTarget("Set pass target", passerNo, shooterNo))
        FIRST.add_child(Kick.Approach("Passer approach", passerNo))
        FIRST.add_child(BaseSkill.SuccessTimer("SuccessTimer1.0", 1.0))
        self.add_child(FIRST)

        # 2 shooterがshoot位置に移動する
        SECOND = ParallelOne("SECOND")
        SECOND.add_child(BaseSkill.WaitToReceive("Shooter wait", shooterNo))
        SECOND.add_child(
            Analyst.IsOnTarget("Shooter is on target", shooterNo, 0.5))
        SECOND.add_child(BaseSkill.SuccessTimer("SuccessTimer2.0", 3.0))
        self.add_child(SECOND)
        #
        # 3 passerがボールを蹴る
        THIRD = ParallelAll("THIRD")
        THIRD.add_child(
            Kick.SetPassTarget("Set pass target", passerNo, shooterNo))
        THIRD.add_child(Kick.Pass("PASS", passerNo))

        # 3 shooterが受け取りshootする
        THIRD.add_child(Kick.CalcuKickTarget("CalcuKickTarget", shooterNo))
        THIRD.add_child(Kick.ReceiveShoot("ReceiveShoot", shooterNo))
        THIRD.add_child(BaseSkill.FailureTimer("FailureTimer7.0", 10.0))
        INVERT = Invert("Invert")
        INVERT.add_child(Analyst.IsBaller("IsBaller", shooterNo, 1.0))
        THIRD.add_child(INVERT)
        self.add_child(THIRD)
Exemple #15
0
    def __init__(self, name):
        super(Execute, self).__init__(name)

        IS_NORMAL_START = IsNORMAL_START('is_normal_start')

        INPLAY_SWITCH = Sequence("INPLAY_SWITCH")

        EXE_DEFEND = ParallelOne("EXE_DEFEND")
        EXE_DEFEND.add_child(Analyst.BallMoved("BallMoved"))
        EXE_DEFEND.add_child(GoalKeeper.PenaltyDefense("PenaltyDefense", 0))
        EXE_DEFEND.add_child(BaseSkill.WaitPenaltyShoot("Wait1", 1))
        EXE_DEFEND.add_child(BaseSkill.WaitPenaltyShoot("Wait2", 2))
        INPLAY_SWITCH.add_child(EXE_DEFEND)

        EXE_SHOOT = ParallelAll("EXE_SHOOT")
        EXE_SHOOT.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 0))
        EXE_SHOOT.add_child(Kick.Shoot("Shoot", 0))
        EXE_SHOOT.add_child(BaseSkill.WaitPenaltyShoot("Wait1", 1))
        EXE_SHOOT.add_child(BaseSkill.WaitPenaltyShoot("Wait2", 2))
        INPLAY_SWITCH.add_child(EXE_SHOOT)

        self.add_child(IS_NORMAL_START)
        self.add_child(INPLAY_SWITCH)
Exemple #16
0
    def __init__(self, name, num1, num2):
        super(PassAndPass, self).__init__(name)

        wait1X, wait1Y, wait1Yaw = (-2.0, 2.0, -math.pi*0.5)
        wait2X, wait2Y, wait2Yaw = (-2.0, -2.0, math.pi*0.5)

        PLAYER1 = Sequence("player1")
        wait_ = ParallelOne("wait1")
        wait_.add_child(Analyst.BallEnteringQuadrant("ballEntering",2))
        wait_.add_child(BaseSkill.Stay("stay1", num1, wait1X, wait1Y, wait1Yaw))

        pass_ = ParallelOne("pass1")
        pass_.add_child(Kick.SetPassTarget("setTarget1",num1, num2))
        pass_.add_child(Kick.Pass("GoPassing1", num1))
        pass_.add_child(Analyst.BallEnteringQuadrant("ballEntering",3))

        PLAYER1.add_child(wait_)
        PLAYER1.add_child(pass_)
        PLAYER1.add_child(GoToPosition("goto1",num1,wait1X,wait1Y,wait1Yaw))
        
        self.add_child(PLAYER1)

        PLAYER2 = Sequence("player2")
        wait_ = ParallelOne("wait2")
        wait_.add_child(Analyst.BallEnteringQuadrant("ballEntering",3))
        wait_.add_child(BaseSkill.Stay("stay2", num2, wait2X, wait2Y, wait2Yaw))

        pass_ = ParallelOne("pass2")
        pass_.add_child(Kick.SetPassTarget("setTarget2",num2, num1))
        pass_.add_child(Kick.Pass("GoPassing2", num2))
        pass_.add_child(Analyst.BallEnteringQuadrant("ballEntering",2))

        PLAYER2.add_child(wait_)
        PLAYER2.add_child(pass_)
        PLAYER2.add_child(GoToPosition("goto2",num2,wait2X,wait2Y,wait2Yaw))
        
        self.add_child(PLAYER2)
Exemple #17
0
    def __init__(self, name):
        super(ExeOneRobot_Pre, self).__init__(name)

        self.add_child(Analyst.ThereIsOnlyOneRobot("ThereIsOneRobot"))
        self.add_child(Kick.CalcuKickTarget("CalcuKickTarget", 0))
        self.add_child(Kick.Approach("Approach", 0))
Exemple #18
0
def StillDoingGetBehind():

    global debugLed
    global AttackMode, LockDKDRegion
    global AllowLocaliseTimer, DisallowLocaliseTimer
    global AttackDistMem, AttackAngleMem, AttackDirMem
    ##~     global StandTimer

    debug = False

    ##~     if debug:
    ##~         print "", HelpLong.getStuckInfo()

    if AttackMode == Constant.GET_BEHIND_BALL:

        if debug:
            print ""
            print "In StillDoingGetBehind()"
            print "mode       %d   dkd-region     %d" % (AttackMode,
                                                         LockDKDRegion)
            print "allowTimer %d   disallowTimer  %d" % (AllowLocaliseTimer,
                                                         DisallowLocaliseTimer)
            print "radius %d,  angle %.2f,  dir %d" % (
                AttackDistMem, AttackAngleMem, AttackDirMem)
            ##~             print "AttackPosX %.2f,   AttackPosY %.2f" % (AttackPosX, AttackPosY)
            print "myh %.2f" % (Global.selfLoc.getHeading())

        # Break out the get behind if:
        # 1. u have done it, a fire paw kick case will catch it if on edges, and it should
        # 2. the ball rolls out far, then chase it rather than get behind
        # 3. the ball keeps rolling out

        if abs(
                HelpMath.normalizeAngle_180(Global.selfLoc.getHeading() -
                                            AttackAngleMem)) < 20:

            GetBehindBreakOutAction()

            if debug:
                print "break out, lined up: the h", Global.selfLoc.getHeading()
            return False

        if Global.ballD > 65:  # Ball has rolled out far away

            if debug:
                print "break out: ballD > 65", Global.ballD

            GetBehindBreakOutAction()
            return False

        if Global.lastForward < -3:

            GetBehindBreakOutAction()
            return False

        # Otherwise, continue getBehindBall, and additionally may do a kick.
        GetBehindBall.getBehindBall(AttackDistMem, AttackAngleMem,
                                    AttackDirMem, False, 60, 1.2)
        IndicatorAction.showFacePattern(debugLed)

        if (Global.ballD < 25 and LockDKDRegion != Constant.DKDBlank):
            Global.finalAction[Constant.AAForward] *= 0.7
            Global.finalAction[Constant.AALeft] *= 0.7
            Global.finalAction[Constant.AATurnCCW] *= 0.7

        # Check if ready to do a YouPanCake.
        if LockDKDRegion == Constant.DKDLeft and BallUnderChinForUpenn():

            debugLed = None
            LockDKDRegion = Constant.DKDBlank
            AttackMode = Constant.HOVER_TO_BALL
            setLocaliseTimer(0, 30)
            if debug:
                print "break out doing upenn"
            Kick.UPright()

        elif LockDKDRegion == Constant.DKDRight and BallUnderChinForUpenn():

            debugLed = None
            LockDKDRegion = Constant.DKDBlank
            AttackMode = Constant.HOVER_TO_BALL
            setLocaliseTimer(0, 30)
            Kick.UPleft()

            if debug:
                print "break out doing upenn"

        return True

    # then it must be HOVER_TO_BALL.
    else:
        return False