labpyproject.apps.labpyrinthe.bus.commands.cmd_manager

CommandManager, le gestionnaire de commandes du jeu, assurant les deux rôles suivants :

  1. Garantit la validité des commandes utilisateurs

  2. 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 :

    1. analyse globale de l’environnement (bonus à portée, dangers pouvant impacter le robot, est il en retard…), évaluation de la pertinence des cibles

    2. évaluation des options pouvant constituer la prochaine cible temporaire dans les 4 directions (mesures de densité, calculs de scores)

    3. sélection au besoin d’une nouvelle cible temporaire (prise en compte du coût de parcours dans le choix)

    4. priorisation des objectifs en fonction des caractéristiques du robot (mouvement, attaque, défense, travail)

    5. 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

CommandManager()

Gestionnaire des commandes

Class Inheritance Diagram

Inheritance diagram of labpyproject.apps.labpyrinthe.bus.commands.cmd_manager.CommandManager