🧠 Architecture Cognitive : Pacman & Machines d'États

Guide naïf

Cette feuille de route explique comment brancher un "cerveau abstrait" (votre Machine d'États) sur un "corps physique" (votre Fantôme dans le jeu).

L'Anatomie de l'Instinct

Un agent cognitif basique ne réfléchit pas : il réagit à ses sens.
La logique doit être strictement divisée en trois actes distincts :

1. La Naissance (Le Cerveau)

La machine d'états doit être créée une seule fois à la naissance du fantôme. Ne la recréez pas à chaque frame, sinon le fantôme devient amnésique.

def __init__(self, index):
    super().__init__(index)
    # On instancie le cerveau abstrait
    self.fsm = MachineEtatsFantome()

2. Le Nerf Optique (La Perception)

À chaque tic d'horloge du jeu, le fantôme "ouvre les yeux". Il calcule une donnée mathématique (la distance de Manhattan) et s'en sert pour déclencher les interrupteurs de son cerveau.

def getDistribution(self, state):
    # 1. Calcul de la réalité physique
    distance = manhattanDistance(posFantome, posPacman)
    
    # 2. Mise à jour de l'humeur
    if distance <= 2:
        self.fsm.pacman_proche()
    elif distance <= 5:
        self.fsm.pacman_vu()

3. Le Muscle (L'Action)

Une fois que le cerveau a mis à jour son état (son humeur), le fantôme exécute le comportement correspondant à l'état actif, sans se poser de questions.

    # 3. Exécution selon l'humeur
    if self.fsm.state == 'SEUL':
        return action_aleatoire()
    elif self.fsm.state == 'VUE':
        return action_minimiser_distance()
    elif self.fsm.state == 'PROCHE':
        return action_maximiser_distance()

Modélisation de la FSM (Graphe d'États)

Ce diagramme représente la logique de bascule du cerveau de votre agent en fonction de la distance.

stateDiagram-v2 direction LR [*] --> SEUL : Naissance SEUL --> VUE : pacman_vu\n(Dist <= 5) VUE --> SEUL : pacman_perdu\n(Dist > 5) VUE --> PROCHE : pacman_proche\n(Dist <= 2) SEUL --> PROCHE : pacman_proche\n(Dist <= 2) PROCHE --> VUE : pacman_eloigne\n(Dist > 2)

Retour à l'énoncé des laboratoires Agents · voir aussi la version indices