def se_positionner_haut(mystate): action = Action(mystate) if (mystate.position_mon_but.x == GAME_WIDTH): return action.sprint( Vector2D(0.35 * GAME_WIDTH, mystate.ball_position.y)) if (mystate.position_mon_but.x == 0): return action.sprint( Vector2D(0.65 * GAME_WIDTH, mystate.ball_position.y))
def shoot_but(mystate): act = Action(mystate) x = mystate.ball_position.distance(mystate.position_but_adv) sh = Shootameliorer(mystate, x) if mystate.my_position.distance( mystate.ball_position) < 1.65 and mystate.my_position.distance( mystate.position_but_adv) < GAME_WIDTH / 2: return sh.shoot if mystate.my_position.distance(mystate.ball_position) < 1.65: return act.shoot_but_adv return fonceurball(mystate)
def compute_strategy(self,state,id_team,id_player): mystate= MyState(state,id_team,id_player) action=Action(mystate) x=mystate.ball_position.distance(Vector2D(GAME_WIDTH,GAME_HEIGHT/2)-mystate.my_position) zone=state.get_zones(mystate.my_team) if len(zone)==0: if mystate.my_position.distance(mystate.ball_position)<1.6: if mystate.my_position.distance(Vector2D(GAME_WIDTH,GAME_HEIGHT/2))<(1/.4)*GAME_WIDTH: return SoccerAction(Vector2D(),(Vector2D(GAME_WIDTH,GAME_HEIGHT/2)-mystate.my_position).norm_max(1)) return SoccerAction(Vector2D(),Vector2D(GAME_WIDTH,GAME_HEIGHT/2)-mystate.my_position) return SoccerAction(mystate.ball_position-mystate.my_position,Vector2D()) z=zone[0] if mystate.ball_position.distance(z.position+z.l/2)<z.l/2: return donothing() if mystate.my_position.distance(mystate.ball_position)<1.6: if mystate.ball_position.distance(z.position+z.l/2)<2*z.l: return SoccerAction(Vector2D(),(z.position+z.l/2-mystate.my_position).norm_max(0.05)) return action.petit_shoot_zone(z.position+z.l/2) return SoccerAction(mystate.ball_position-mystate.my_position,Vector2D())
def compute_strategy(self, state, id_team, id_player): mystate = MyState(state, id_team, id_player) action = Action(mystate) self.mydic["c"] += 1 if mystate.my_position.distance(mystate.ball_position) < 1.65: return (action.shoot_but_adv) # if mystate.my_position.distance(mystate.ball_position)<3: # return ralentir_bcp(mystate,action) # if mystate.my_position.distance(mystate.ball_position)<7: # return ralentir_moyen(mystate,action) # if mystate.my_position.distance(mystate.ball_position)<9: # return ralentir_peu(mystate,action) return fonceurball(mystate)
def shoot_but(mystate): act = Action(mystate) x = mystate.ball_position.distance(mystate.position_but_adv) sh = Shootameliorer(mystate, x) if mystate.my_position.distance( mystate.ball_position) < 1.65 and mystate.my_position.distance( mystate.position_but_adv) < GAME_WIDTH / 2: return sh.shoot if mystate.my_position.distance(mystate.ball_position) < 1.65: return act.shoot_but_adv if mystate.my_position.distance(mystate.ball_position) < 10: return SoccerAction( mystate.ball_position - mystate.my_position + (mystate.ball_vitesse), Vector2D()) return fonceurball(mystate)
def compute_strategy(self, state, id_team, id_player): mystate = MyState(state, id_team, id_player) action = Action(mystate) self.mydic["c"] += 1 if self.mydic["c"] < 0: return donothing() if mystate.my_position.distance(mystate.ball_position) < 1.65: if (mystate.position_mon_but.distance(mystate.ball_position) > GAME_WIDTH * 0.35 and mystate.position_mon_but.distance( mystate.ball_position) < GAME_WIDTH * 0.65): return (action.petit_shoot_but_adv) return (action.shoot_but_adv) if mystate.my_position.distance(mystate.ball_position) < 10: return fonceurballdef(mystate) if (mystate.position_mon_but.x == GAME_WIDTH): if (mystate.position_mon_but.distance(mystate.ball_position) < GAME_WIDTH * 0.25): return action.sprint( Vector2D(0.65 * GAME_WIDTH, mystate.ball_position.y)) if (mystate.position_mon_but.distance(mystate.ball_position) <= GAME_WIDTH / 2): return action.sprint( Vector2D(0.5 * GAME_WIDTH, mystate.ball_position.y)) if (mystate.position_mon_but.x == 0): if (mystate.position_mon_but.distance(mystate.ball_position) < GAME_WIDTH * 0.45): return action.sprint( Vector2D(0.55 * GAME_WIDTH, mystate.ball_position.y)) if (mystate.position_mon_but.distance(mystate.ball_position) <= GAME_WIDTH / 2): return action.sprint( Vector2D(0.5 * GAME_WIDTH, mystate.ball_position.y)) return fonceurball(mystate)
def dribble(mystate): action = Action(mystate) if mystate.my_position.distance(mystate.ball_position) < 1.65: return action.petit_shoot_but_adv return fonceurball(mystate)
def passe_pote(mystate): action = Action(mystate) if mystate.my_position.distance(mystate.ball_position) < 1.65: return action.petit_shoot_joueur_proche return fonceurball(mystate)
def compute_strategy(self, state, id_team, id_player): mystate = MyState(state, id_team, id_player) action = Action(mystate) return defonceur(mystate, action)