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))
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()
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))
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)
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))
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)
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()
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)
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))
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)
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)
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)
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)
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)
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)
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)
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))
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