def compute_strategy(self, state, id_team, id_player): s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_joueur = s.pos_joueur cage_adv = s.cage_adv pos_ball = s.pos_ball return move.to_ball(pos_ball, pos_joueur) + shoot.to_goal(pos_ball, pos_joueur,cage_adv,self.strength)
def compute_strategy(self, state, id_team, id_player): s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_joueur = s.pos_joueur cage_adv = s.cage_adv pos_ball = s.pos_ball pos_mate = s.mate_front[0] return shoot.passe2(pos_joueur, pos_mate, self.strength)
def compute_strategy(self, state, id_team, id_player): s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_joueur = s.pos_joueur pos_ball = s.pos_ball if pos_ball.distance(pos_joueur) < PLAYER_RADIUS + BALL_RADIUS: return SoccerAction(Vector2D(3 * GAME_WIDTH / 4, GAME_WIDTH / 2 + 2), shoot=None) else: return SoccerAction(acceleration=0, shoot=None)
def compute_strategy(self, state, id_team, id_player): s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_joueur = s.pos_joueur pos_ball = s.pos_ball pos_cage = s.cage_def cage_adv = s.cage_adv puissance_tir = shoot.puissance_tir(6) vect_vitesse_joueur = s.vitesse_joueur approxi_pos_ball = s.pos_ball + 6 * s.vitesse_ball near_ball_mate = s.near_mate_ball dist_joueur_ball = s.dist_joueur_ball near_opp_ball = s.near_opp_ball near_mate = s.near_mate[1] pos_opp = s.opponents_pos zone_pressing = 80 mate_front = s.mate_front[0] shoot_poss = s.shoot_poss(pos_joueur, near_mate) pass_poss = s.passe_poss opp_opp_balle = s.near_opp2 appel = s.replacement_att4v4_bas centre = s.centre if s.team == 1: #Si la balle est proche if dist_joueur_ball <= zone_pressing: #si je suis plus proche de la balle que l'adversaire et qu'elle est dans ma zone, je fais une passe if dist_joueur_ball <= near_opp_ball and approxi_pos_ball.x > 2 * GAME_WIDTH / 5 and pos_ball.x < 3.5 * GAME_WIDTH / 5: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe else: #Il se place entre deux adversaires et cherche à faire la passe mouvement = move.joueur_entre_adv( pos_joueur, s.opponents_pos[len(s.opponents_pos) - 1], s.opponents_pos[len(s.opponents_pos) - 2]) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe else: #Il vient suppleer l'attaquant if approxi_pos_ball.x > 3.5 * GAME_WIDTH / 5: mouvement = move.appel(pos_joueur, appel) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: #Il se replace au centre mouvement = move.replacement_def(pos_joueur, centre) return mouvement else: #Si la balle est proche if dist_joueur_ball <= zone_pressing: #si je suis plus proche de la balle que l'adversaire et qu'elle est dans ma zone, je fais une passe if dist_joueur_ball <= near_opp_ball and approxi_pos_ball.x < 3 * GAME_WIDTH / 5 and pos_ball.x > 1.5 * GAME_WIDTH / 5: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe else: #Il se place entre deux adversaires et cherche à faire la passe mouvement = move.joueur_entre_adv( pos_joueur, s.opponents_pos[len(s.opponents_pos) - 1], s.opponents_pos[len(s.opponents_pos) - 2]) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe else: #Il vient suppleer l'attaquant if approxi_pos_ball.x < 1.5 * GAME_WIDTH / 5: mouvement = move.appel(pos_joueur, appel) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: #Il se replace au centre mouvement = move.replacement_def(pos_joueur, centre) return mouvement
def compute_strategy(self, state, id_team, id_player): s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_joueur = s.pos_joueur pos_ball = s.pos_ball pos_cage = s.cage_def vect_vitesse_joueur = s.vitesse_joueur approxi_pos_ball = s.pos_ball + 2 * s.vitesse_ball dist_joueur_ball = s.dist_joueur_ball near_opp_ball = s.near_opp_ball near_mate = s.mate_front[0] puissance_tir = 6. replacement = s.replacement_gardien #s'il est dans l'équipe une: if s.team == 1: #si la balle est dans la surface: if (approxi_pos_ball.x < GAME_WIDTH / 4) and ( (approxi_pos_ball.y < 4 * GAME_HEIGHT / 5) and (approxi_pos_ball.y > GAME_HEIGHT / 5)): mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) tir = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + tir #sinon si elle est dans son camp: elif (approxi_pos_ball.x <= GAME_WIDTH / 2): #s'il est le plus proche, il fait une passe if dist_joueur_ball < near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: #sinon il reste en position gardien defense = move.DeGea_pos(pos_joueur, approxi_pos_ball, pos_cage, vect_vitesse_joueur) return defense #sinon il se replace else: defense = move.replacement_def(pos_joueur, replacement) return defense if s.team == 2: #si la balle est dans la surface: if (approxi_pos_ball.x > 3 * GAME_WIDTH / 4) and ( (approxi_pos_ball.y < 4 * GAME_HEIGHT / 5) and (approxi_pos_ball.y > GAME_HEIGHT / 5)): mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) tir = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + tir #sinon si elle est dans son camp: elif (approxi_pos_ball.x >= GAME_WIDTH / 2): #s'il est le plus proche, il fait une passe if dist_joueur_ball < near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: #sinon il reste en position gardien defense = move.DeGea_pos(pos_joueur, approxi_pos_ball, pos_cage, vect_vitesse_joueur) return defense #sinon il se replace else: defense = move.replacement_def(pos_joueur, replacement) return defense
def compute_strategy(self, state, id_team, id_player): # id_team is 1 or 2 # id_player starts at 0 s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_ball = s.pos_ball cage_adv = s.cage_adv pos_joueur = s.pos_joueur pos_appel_de_ball = s.appel_de_balle vect_vitesse_joueur = s.vitesse_joueur replacement = s.replacement_att2v2 #puissance_tir = shoot.puissance_tir(0.1) approxi_pos_ball = s.approxi_pos_ball puissance_tir = 6 near_opp_ball = s.near_opp_ball near_mate_ball = s.near_mate_ball dist_joueur_ball = s.dist_joueur_ball if s.team == 1: #si la balle est dans le camp adverse if (approxi_pos_ball.x >= GAME_WIDTH / 2): mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) tir = shoot.goal_shoot(pos_joueur, cage_adv, puissance_tir) action = mouvement + tir return action else: #si un coequipier peut avoir la balle il fait un appel if (near_mate_ball < near_opp_ball): mouvement = move.appel(pos_joueur, pos_appel_de_ball) return mouvement #sinon il se replace else: #S'il est seul il dézone pour tirer if (approxi_pos_ball.x >= GAME_WIDTH / 3) and dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball( pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.avancer_avec_ball( pos_joueur, cage_adv, puissance_tir) return mouvement + passe #sinon il se replace else: mouvement = move.replacement_att( pos_joueur, replacement) return mouvement else: #si la balle est dans le camp adverse if (approxi_pos_ball.x <= GAME_WIDTH / 2): mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) tir = shoot.goal_shoot(pos_joueur, cage_adv, puissance_tir) action = mouvement + tir return action else: #si un coequipier peut avoir la balle il fait un appel if (near_mate_ball < near_opp_ball): mouvement = move.appel(pos_joueur, pos_appel_de_ball) return mouvement else: #S'il est seul il dézone pou faire une passe if (approxi_pos_ball.x >= 2 * GAME_WIDTH / 3) and dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball( pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.avancer_avec_ball( pos_joueur, cage_adv, puissance_tir) return mouvement + passe #sinon il se replace else: mouvement = move.replacement_att( pos_joueur, replacement) return mouvement
def compute_strategy(self, state, id_team, id_player): s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_joueur = s.pos_joueur pos_ball = s.pos_ball pos_cage = s.cage_def cage_adv = s.cage_adv replacement_def = s.replacement_def4v4 corner_haut_opp = s.corner_haut_opp vect_vitesse_joueur = s.vitesse_joueur approxi_pos_ball = s.approxi_pos_ball dist_joueur_ball = s.dist_joueur_ball near_opp_ball = s.near_opp_ball action = move.def_Ramos(pos_joueur, pos_ball, pos_cage, vect_vitesse_joueur) near_mate = s.mate_front[0] near_ball_mate = s.near_mate_ball pos_opp = s.opponents_pos shoot_poss = s.shoot_poss(pos_joueur, near_mate) appel_def = s.replacement_def4v4 puissance_tir = 6 mate_front = s.mate_front[0] if s.team == 1: #si elle est dans son camp: if (approxi_pos_ball.x <= GAME_WIDTH / 2): #il se met en place pour l'intercepter et fait la passe à l'attaquant approxi_pos_ball = s.pos_ball + 6 * s.vitesse_ball #Si elle est dans la zone du gardien if approxi_pos_ball.x < GAME_WIDTH / 5: #Et qu'il a la balle if near_ball_mate <= near_opp_ball: mouvement = move.appel(pos_joueur, appel_def) return mouvement #sinon il fonce vers la balle et tente une passe VERS L'AVANT else: mouvement = move.joueur_vers_ball( pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) #sinon il va vers la balle faire une passe else: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe #sinon il se replace else: #S'il est seul il dézone pou faire une passe if (approxi_pos_ball.x <= 2 * GAME_WIDTH / 3) and dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe else: defense = move.replacement_def(pos_joueur, replacement_def) return defense if s.team == 2: #si elle est dans son camp: if (approxi_pos_ball.x >= GAME_WIDTH / 2): #il se met en place pour l'intercepter et fait la passe à l'attaquant approxi_pos_ball = s.pos_ball + 6 * s.vitesse_ball #Si elle est dans la zone du gardien if approxi_pos_ball.x > 4 * GAME_WIDTH / 5: #Et qu'il a la balle if near_ball_mate <= near_opp_ball: mouvement = move.appel(pos_joueur, appel_def) return mouvement #sinon il fonce vers la balle et tente une passe VERS L'AVANT else: mouvement = move.joueur_vers_ball( pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) #sinon il va vers la balle faire une passe else: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe #sinon il se replace else: #S'il est seul il dézone pou faire une passe if (approxi_pos_ball.x >= GAME_WIDTH / 3) and dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, mate_front, puissance_tir) return mouvement + passe else: defense = move.replacement_def(pos_joueur, replacement_def) return defense
def compute_strategy(self, state, id_team, id_player): s = superstate(state, id_team, id_player) move = Move(s) shoot = Shoot(s) pos_joueur = s.pos_joueur pos_ball = s.pos_ball pos_cage = s.cage_def cage_adv = s.cage_adv replacement_def = s.replacement_def corner_haut_opp = s.corner_haut_opp vect_vitesse_joueur = s.vitesse_joueur approxi_pos_ball = s.approxi_pos_ball dist_joueur_ball = s.dist_joueur_ball near_opp_ball = s.near_opp_ball action = move.def_Ramos(pos_joueur, pos_ball, pos_cage, vect_vitesse_joueur) near_mate = s.mate_front[0] pos_opp = s.opponents_pos shoot_poss = s.shoot_poss(pos_joueur, near_mate) puissance_tir = 6 if s.team == 1: #si elle est dans son camp: if (approxi_pos_ball.x <= GAME_WIDTH / 2): #il se met en place pour l'intercepter et fait la passe à l'attaquant approxi_pos_ball = s.pos_ball + 6 * s.vitesse_ball if dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: defense = move.DeGea_pos(pos_joueur, approxi_pos_ball, pos_cage, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return defense + passe #sinon il se replace else: #S'il est seul il dézone pou faire une passe if (approxi_pos_ball.x <= 2 * GAME_WIDTH / 3) and dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: defense = move.replacement_def(pos_joueur, replacement_def) return defense if s.team == 2: #si elle est dans son camp: if (approxi_pos_ball.x >= GAME_WIDTH / 2): #il se met en place pour l'intercepter et fait la passe à l'attaquant if dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: defense = move.DeGea_pos(pos_joueur, approxi_pos_ball, pos_cage, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return defense + passe #sinon il se replace else: #S'il est seul il dézone pou faire une passe if (approxi_pos_ball.x >= GAME_WIDTH / 3) and dist_joueur_ball <= near_opp_ball: mouvement = move.joueur_vers_ball(pos_joueur, approxi_pos_ball, vect_vitesse_joueur) passe = shoot.passe2(pos_joueur, near_mate, puissance_tir) return mouvement + passe else: defense = move.replacement_def(pos_joueur, replacement_def) return defense