Notions avancées - GaetanCrabeels/Dev-II GitHub Wiki

Dans le but de valider les AAs avancés repris ci-dessous:

image

Fonctions Lambda et les Filtres :

Pour Lambda : Tout d'abord dans la classe BattleSystem, lambda est utilisé comme clef afin de trouver l'ennemie le plus proche du joueur.

return min(enemies_within_range,
                   key=lambda enemy: self._distance(self.player.x, self.player.y, enemy.position[0], enemy.position[1]))

Ensuite dans la classe Player, lambda est à nouveau utilisé afin d'effectuer le calcul de la valeur de la caractéristique et son prix en fonction de son niveau.

        self.formulas = {
            'max_hp': lambda n: 10 + (n - 1) * math.log(10 + n),
            'max_range': lambda n: 100 * (1.02 ** (n - 1)),
            'attack_speed': lambda n: 1 + (n - 1) * (0.1 * n),
            'damage': lambda n: n * 10
        }

        self.price_formulas = {
            'max_hp': lambda n: 10 * n,
            'max_range': lambda n: 10 * n,
            'attack_speed': lambda n: 10 * n,
            'damage': lambda n: 10 * n
        }

Pour les filtres : Dans ces deux exemples ci-dessous, une liste est utilisée afin de filtrer le résultat.

En premier, nous vérifions si dans notre liste d'ennemie, des ennemies se trouvent en portée du joueur et nous attaquons le plus proche.

enemies_within_range = [enemy for enemy in self.enemies_list if
                         self._distance(self.player.x, self.player.y, enemy.position[0], enemy.position[1]) <=
                         self.player.attributes['max_range']]

En deuxième, nous récupérons les ennemies morts, et nous filtrons la liste d'ennemies vivants en fonction.

for dead_enemy in self.enemies_dead:
    if dead_enemy in self.enemies_list:
        self.enemies_list.remove(dead_enemy)

Travail sur différentes branches afin d'optimiser le workflow

https://github.com/Zwarmex/Project-dev-3

Lors de mon projet en Dev III, nous avions chacun notre branche afin de réaliser les US persos, et différents aspects du projet, en parallèle afin que l'état d'avancement individuel n'impact pas l'avancé du projet.

image