labpyproject.apps.labpyrinthe.bus.commands.cmd_manager¶
CommandManager, le gestionnaire de commandes du jeu, assurant les deux rôles suivants :
Garantit la validité des commandes utilisateurs
Pilote les joueurs automatiques
Principes généraux de pilotage des robots:
les commandes dépendent du type du robot (Chasseur, Winner, …) et de ses caractéristiques propres (intelligence, aggressivité…)
les robots évoluent au moyen d’une cible principale (la sortie pour un Winner, un adversaire pour un chasseur, …) et d’une cible temporaire représentant la prochaine étape à atteindre
le choix d’une commande suit la séquence suivante :
analyse globale de l’environnement (bonus à portée, dangers pouvant impacter le robot, est il en retard…), évaluation de la pertinence des cibles
évaluation des options pouvant constituer la prochaine cible temporaire dans les 4 directions (mesures de densité, calculs de scores)
sélection au besoin d’une nouvelle cible temporaire (prise en compte du coût de parcours dans le choix)
priorisation des objectifs en fonction des caractéristiques du robot (mouvement, attaque, défense, travail)
choix de la prochaine commande (ou d’une séquence de coups pour les robots les plus intelligents disposant de plusieurs coups consécutifs)
Optimisations:
cache de très court terme (pour le coup en cours): combinaisons de grenade, chemins
cache de court terme (pour la série de coups en cours): objectifs, pseudo actions programmées, probabilité de risque associées aux cases atteignables
cache de moyen et long terme: portés par le gestionnaire de carte (LabLevel) et ses applats (Matrices).
utilisation de sets plutôt que de listes
Classes¶
Gestionnaire des commandes |
Class Inheritance Diagram¶
