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