Cette feuille de route explique comment brancher un "cerveau abstrait" (votre Machine d'États) sur un "corps physique" (votre Fantôme dans le jeu).
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 :
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()
À 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()
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()
Ce diagramme représente la logique de bascule du cerveau de votre agent en fonction de la distance.
Retour à l'énoncé des laboratoires Agents · voir aussi la version indices