Example #1
0
 def attack(self, target, distance):
     amount = int(abs(self.size - target.size) * COEFF_DEGAT / distance)
     if amount != 0:
         amount += (abs(amount) // amount) * DEGAT_CONST
     amount *= COEFF_DEGAT
     target.food = usuelles.clipcoord(target.food - 2 * amount, target.foodMax)
     self.food = usuelles.clipcoord(self.food - amount, self.foodMax)
Example #2
0
 def searchPlace(self, slime):
     alpha = np.random.rand() * 2 *  np.pi
     distance = np.random.rand()
     X = usuelles.clipcoord(slime.X + distance * COEFF_SPEED * slime.speed * np.cos(alpha), self.size)
     Y = usuelles.clipcoord(slime.Y + distance * COEFF_SPEED * slime.speed * np.sin(alpha), self.size)
     slime.X, slime.Y = X, Y
     slime.fatigue((slime.speed ** 2) * (slime.size ** 3) * COEFF_FATIGUE * distance)
     return True
Example #3
0
 def fly(self, target, size):
     if self.gender != target.gender:
         return False
     deltaX = target.X - self.X
     deltaY = target.Y - self.Y
     hyp = np.sqrt(deltaX ** 2 + deltaY ** 2)
     facteur = hyp * self.speed
     self.X = usuelles.clipcoord(self.X - facteur * deltaX, size)
     self.Y = usuelles.clipcoord(self.Y - facteur * deltaX, size)
     self.fatigue(self.size * self.speed)
Example #4
0
 def searchPlace(self, coords):
     possible = []
     for i in [-1, 0, 1]:
         for j in [-1, 0, 1]:
             a, b = (usuelles.clipcoord(i + coords[0], self.taille),
                     usuelles.clipcoord(j + coords[1], self.taille))
             if self.plateau[a, b] == None and (i, j) != (0, 0):
                 possible.append((a, b))
     if possible != []:
         return possible[np.random.randint(0, len(possible))]
     else:
         return None
Example #5
0
 def searchPlace(self):  #Bon
     alpha = np.random.rand() * 2 * np.pi
     distance = np.random.rand()
     X = usuelles.clipcoord(
         self.X + distance * COEFF_SPEED * self.speed * np.cos(alpha),
         self.population.size)
     Y = usuelles.clipcoord(
         self.Y + distance * COEFF_SPEED * self.speed * np.sin(alpha),
         self.population.size)
     self.X, self.Y = X, Y
     self.fatigue(
         (self.speed**2) * (self.size**3) * COEFF_FATIGUE * distance)
     return True