Ejemplo n.º 1
0
 def possede(
     self
 ):  #retourne true si la balle est plus proche d'un membre de notre equipe ou false sinon
     i = 0
     j = 1
     equipe = 9
     dmax = math.sqrt((GAME_WIDTH)**2 + (GAME_HEIGHT)**2)
     while j < 3:
         while i < 4:
             if math.sqrt((self.state.player_state(j, i).position.x -
                           self.ball.x)**2 +
                          (self.state.player_state(j, i).position.y -
                           self.ball.y)**2) < dmax:
                 dmax = math.sqrt(
                     (self.state.player_state(j, i).position.x -
                      self.ball.x)**2 +
                     (self.state.player_state(j, i).position.y -
                      self.ball.y)**2)
                 equipe = j
             i = i + 1
         j = j + 1
         i = 0
     if equipe == self.id_team:
         return True
     return False
Ejemplo n.º 2
0
    def fprocheatk(
            self):  #donne le vecteur position de l'attaquant le plus proche
        i = 2  # a partir des 2 attaquant
        n = 4
        j = 0
        while i < n:

            ve = Vector2D(GAME_WIDTH, GAME_HEIGHT)
            while j < n:
                if (math.sqrt(
                    (self.state.player_state(self.id_team % 2 +
                                             1, j).position.x -
                     self.state.player_state(self.id_team, i).position.x)**2 +
                    (self.state.player_state(self.id_team % 2 +
                                             1, j).position.y -
                     self.state.player_state(self.id_team, i).position.y)**2) <
                        math.sqrt(ve.x**2 + ve.y**2)):
                    ve = Vector2D(
                        self.state.player_state(self.id_team % 2 + 1,
                                                j).position.x -
                        self.state.player_state(self.id_team, i).position.x,
                        self.state.player_state(self.id_team % 2 + 1,
                                                j).position.y -
                        self.state.player_state(self.id_team, i).position.y)
                    j = j + 1
            j = 0

            if i == 2:
                tmp = Vector2D(
                    self.state.player_state(self.id_team, i).position.x -
                    self.player.x,
                    self.state.player_state(self.id_team, i).position.y -
                    self.player.y)
                distfe = math.sqrt(ve.x**2 + ve.y**2)
            else:
                tmp2 = Vector2D(
                    self.state.player_state(self.id_team, i).position.x -
                    self.player.x,
                    self.state.player_state(self.id_team, i).position.y -
                    self.player.y)
                distfe2 = math.sqrt(ve.x**2 + ve.y**2)

        if tmp < tmp2:
            if distfe > 15:
                return tmp
            else:
                return tmp2
        else:
            if distfe2 > 15:
                return tmp2
            else:
                return tmp
Ejemplo n.º 3
0
 def eproche(self):  #distance entre nous et l'adversaire le plus proche
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if (math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              self.player.x)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              self.player.y)**2) < math.sqrt(v.x**2 + v.y**2)):
             v = Vector2D(
                 self.state.player_state(self.id_team % 2 + 1,
                                         i).position.x - self.player.x,
                 self.state.player_state(self.id_team % 2 + 1, i).position.y
                 - self.player.y)
         i = i + 1
     return math.sqrt(v.x**2 + v.y**2)
Ejemplo n.º 4
0
 def eproche(self):
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if (math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              self.player.x)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              self.player.y)**2) < math.sqrt(v.x**2 + v.y**2)):
             v = Vector2D(
                 self.state.player_state(self.id_team % 2 + 1,
                                         i).position.x - self.player.x,
                 self.state.player_state(self.id_team % 2 + 1, i).position.y
                 - self.player.y)
         i = i + 1
     return v.x**2 + v.y**2
Ejemplo n.º 5
0
 def fbnorme(self):  #distance la plus courte entre la balle et un alliee
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if (math.sqrt(
             (self.state.player_state(self.id_team, i).position.x -
              self.ball.x)**2 +
             (self.state.player_state(self.id_team, i).position.y -
              self.ball.y)**2) < math.sqrt(v.x**2 + v.y**2)):
             v = Vector2D(
                 self.state.player_state(self.id_team, i).position.x -
                 self.ball.x,
                 self.state.player_state(self.id_team, i).position.y -
                 self.ball.y)
         i = i + 1
     return math.sqrt(v.x**2 + v.y**2)
Ejemplo n.º 6
0
 def enorme(self):  #distance balle et adversaire
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if (math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              self.ball.x)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              self.ball.y)**2) < math.sqrt(v.x**2 + v.y**2)):
             v = Vector2D(
                 self.state.player_state(self.id_team % 2 + 1,
                                         i).position.x - self.ball.x,
                 self.state.player_state(self.id_team % 2 + 1, i).position.y
                 - self.ball.y)
         i = i + 1
     return math.sqrt(v.x**2 + v.y**2)
Ejemplo n.º 7
0
 def fproche(self):  #donne le vecteur position de l'allier le plus proche
     i = 0
     n = len(self.state.players) / 2
     dmax = math.sqrt((GAME_WIDTH)**2 + (GAME_HEIGHT)**2)
     if self.id_team == 1:
         while i < n:
             if dmax > math.sqrt(
                 (self.state.player_state(self.id_team, i).position.x -
                  self.player.x)**2 +
                 (self.state.player_state(self.id_team, i).position.y -
                  self.player.y)**2
             ) and i != self.id_player and self.state.player_state(
                     self.id_team, i).position.x > self.player.x:
                 v = Vector2D(
                     self.state.player_state(self.id_team, i).position.x -
                     self.player.x,
                     self.state.player_state(self.id_team, i).position.y -
                     self.player.y)
                 dmax = math.sqrt(
                     (self.state.player_state(self.id_team, i).position.x -
                      self.player.x)**2 +
                     (self.state.player_state(self.id_team, i).position.y -
                      self.player.y)**2)
             i = i + 1
     else:
         while i < n:
             if dmax > math.sqrt(
                 (self.state.player_state(self.id_team, i).position.x -
                  self.player.x)**2 +
                 (self.state.player_state(self.id_team, i).position.y -
                  self.player.y)**2
             ) and i != self.id_player and self.state.player_state(
                     self.id_team, i).position.x < self.player.x:
                 v = Vector2D(
                     self.state.player_state(self.id_team, i).position.x -
                     self.player.x,
                     self.state.player_state(self.id_team, i).position.y -
                     self.player.y)
                 dmax = math.sqrt(
                     (self.state.player_state(self.id_team, i).position.x -
                      self.player.x)**2 +
                     (self.state.player_state(self.id_team, i).position.y -
                      self.player.y)**2)
             i = i + 1
     return v
Ejemplo n.º 8
0
 def defadv(self):  #retourne la position du defenseur adverse
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              ((self.id_team % 2 + 1) % 2) * GAME_WIDTH)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              GAME_HEIGHT / 2)**2) < math.sqrt(v.x**2 + v.y**2):
             v = Vector2D(
                 self.state.player_state(self.id_team % 2 + 1, i).position.x
                 - ((self.id_team % 2 + 1) % 2) * GAME_WIDTH,
                 self.state.player_state(self.id_team % 2 + 1,
                                         i).position.y - GAME_HEIGHT / 2)
             res = self.state.player_state(self.id_team % 2 + 1, i).position
         i = i + 1
     return res
Ejemplo n.º 9
0
 def pos_eproche(self):  # retourne la position de l'ennemie le plus proche
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if (math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              self.player.x)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              self.player.y)**2) < math.sqrt(v.x**2 + v.y**2)):
             v = Vector2D(
                 self.state.player_state(self.id_team % 2 + 1,
                                         i).position.x - self.player.x,
                 self.state.player_state(self.id_team % 2 + 1, i).position.y
                 - self.player.y)
             j = self.state.player_state(self.id_team % 2 + 1, i).position
         i = i + 1
     return j
Ejemplo n.º 10
0
 def abnorme(self):  # retourne true si on est le plus proche de la balle
     i = 0
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < 4:
         if (math.sqrt(
             (self.state.player_state(self.id_team, i).position.x -
              self.ball.x)**2 +
             (self.state.player_state(self.id_team, i).position.y -
              self.ball.y)**2) < math.sqrt(v.x**2 + v.y**2)):
             v = Vector2D(
                 self.state.player_state(self.id_team, i).position.x -
                 self.ball.x,
                 self.state.player_state(self.id_team, i).position.y -
                 self.ball.y)
             j = i
         i = i + 1
     if j == self.id_player:
         return True
     return False
Ejemplo n.º 11
0
 def fnorme(self):  #distance entre le joueur et l'allier le plus proche
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if 0 < (math.sqrt(
             (self.state.player_state(self.id_team, i).position.x -
              self.ball.x)**2 +
             (self.state.player_state(self.id_team, i).position.y -
              self.ball.y)**2) and (math.sqrt(
                  (self.state.player_state(self.id_team, i).position.x -
                   self.player.x)**2 +
                  (self.state.player_state(self.id_team, i).position.y -
                   self.player.y)**2) < math.sqrt(v.x**2 + v.y**2))):
             v = Vector2D(
                 self.state.player_state(self.id_team, i).position.x -
                 self.ball.x,
                 self.state.player_state(self.id_team, i).position.y -
                 self.ball.y)
         i = i + 1
     return math.sqrt(v.x**2 + v.y**2)
Ejemplo n.º 12
0
 def cnorme(
         self
 ):  #distance entre l'attaquant adverse le plus proche et nos cages
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if 0 < (math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              (self.id_team % 2 + 1) * GAME_WIDTH)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              GAME_HEIGHT / 2)**2
         )) and (math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              (self.id_team % 2 + 1) * GAME_WIDTH)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              GAME_HEIGHT / 2)**2)) < math.sqrt(v.x**2 + v.y**2):
             v = Vector2D(
                 self.state.player_state(self.id_team % 2 + 1, i).position.x
                 - (self.id_team % 2 + 1) * GAME_WIDTH,
                 self.state.player_state(self.id_team % 2 + 1,
                                         i).position.y - GAME_HEIGHT / 2)
         i = i + 1
     return math.sqrt(v.x**2 + v.y**2)
Ejemplo n.º 13
0
 def eproche2v2(
         self):  #distance entre nous et l'adversaire le plus proche devant
     i = 0
     n = len(self.state.players) / 2
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     while i < n:
         if (math.sqrt(
             (self.state.player_state(self.id_team % 2 + 1, i).position.x -
              self.player.x)**2 +
             (self.state.player_state(self.id_team % 2 + 1, i).position.y -
              self.player.y)**2) < math.sqrt(v.x**2 + v.y**2) and
             ((self.state.player_state(self.id_team % 2 + 1, i).position.x >
               self.player.x and self.id_team == 1) or
              (self.state.player_state(self.id_team % 2 + 1, i).position.x <
               self.player.x and self.id_team == 2))):
             v = Vector2D(
                 self.state.player_state(self.id_team % 2 + 1,
                                         i).position.x - self.player.x,
                 self.state.player_state(self.id_team % 2 + 1, i).position.y
                 - self.player.y)
         i = i + 1
     if math.sqrt(v.x**2 + v.y**2) <= 15:
         return True
     return False
Ejemplo n.º 14
0
 def norme(self):
     return math.sqrt((self.ball.x - self.player.x)**2 +
                      (self.ball.y - self.player.y)**2)
Ejemplo n.º 15
0
 def gnorme(self):  #distance joueur et goal adverse
     return math.sqrt(((self.id_team % 2) * GAME_WIDTH - self.player.x)**2 +
                      (45 - self.player.y)**2)
Ejemplo n.º 16
0
 def norme(self):  #distance entre le joueur et la balle
     return math.sqrt((self.ball.x - self.player.x)**2 +
                      (self.ball.y - self.player.y)**2)
Ejemplo n.º 17
0
 def defadv4(
         self
 ):  #retourne la position du defenseur adverse dans le cas d'un 4V4
     v = Vector2D(GAME_WIDTH, GAME_HEIGHT)
     s = (self.id_team % 2 + 1) - 1
     j0 = math.sqrt(
         (self.state.player_state(self.id_team % 2 + 1, 0).position.x -
          s * GAME_WIDTH)**2 +
         (self.state.player_state(self.id_team % +1, 0).position.y -
          GAME_HEIGHT / 2)**2)
     j1 = math.sqrt(
         (self.state.player_state(self.id_team % 2 + 1, 1).position.x -
          s * GAME_WIDTH)**2 +
         (self.state.player_state(self.id_team % +1, 1).position.y -
          GAME_HEIGHT / 2)**2)
     j2 = math.sqrt(
         (self.state.player_state(self.id_team % 2 + 1, 2).position.x -
          s * GAME_WIDTH)**2 +
         (self.state.player_state(self.id_team % +1, 2).position.y -
          GAME_HEIGHT / 2)**2)
     j3 = math.sqrt(
         (self.state.player_state(self.id_team % 2 + 1, 3).position.x -
          s * GAME_WIDTH)**2 +
         (self.state.player_state(self.id_team % +1, 3).position.y -
          GAME_HEIGHT / 2)**2)
     if j0 < j1 and j0 < j2 and j0 < j3:
         if j1 < j2 and j1 < j3:
             return self.state.player_state(self.id_team % 2 + 1,
                                            1).position
         elif j2 < j1 and j2 < j3:
             return self.state.player_state(self.id_team % 2 + 1,
                                            2).position
         else:
             return self.state.player_state(self.id_team % 2 + 1,
                                            3).position
     elif j2 < j1 and j2 < j0 and j2 < j3:
         if j1 < j0 and j1 < j3:
             return self.state.player_state(self.id_team % 2 + 1,
                                            1).position
         elif j0 < j1 and j0 < j3:
             return self.state.player_state(self.id_team % 2 + 1,
                                            0).position
         else:
             return self.state.player_state(self.id_team % 2 + 1,
                                            3).position
     elif j1 < j0 and j1 < j2 and j1 < j3:
         if j0 < j2 and j0 < j3:
             return self.state.player_state(self.id_team % 2 + 1,
                                            0).position
         elif j2 < j0 and j2 < j3:
             return self.state.player_state(self.id_team % 2 + 1,
                                            2).position
         else:
             return self.state.player_state(self.id_team % 2 + 1,
                                            3).position
     else:
         if j0 < j2 and j0 < j1:
             return self.state.player_state(self.id_team % 2 + 1,
                                            0).position
         elif j2 < j0 and j2 < j1:
             return self.state.player_state(self.id_team % 2 + 1,
                                            2).position
         else:
             return self.state.player_state(self.id_team % 2 + 1,
                                            1).position
Ejemplo n.º 18
0
 def distgb(self):  #retourne la distance entre la balle et notre goal
     return math.sqrt((self.state.player_state(self.id_team, 3).position.x -
                       self.ball.x)**2 +
                      (self.state.player_state(self.id_team, 3).position.y -
                       self.ball.y)**2)