CommandManager

class labpyproject.apps.labpyrinthe.bus.commands.cmd_manager.CommandManager[source]

Bases : object

Gestionnaire des commandes

  1. validation des commandes entrées par les joueurs

  2. génération des commandes des joueurs automatiques

Note

Prototype fonctionnel. Classe trop lourde (> 6500 lignes), à reconcevoir de façon plus générique dans une version de production.

Plan du code source :

A- Interface publique
B- Méthodes privées d'analyse et de décision
    B.1- Commande forcée en cas d'échec des algos de décision
    B.2- Initialisations
        B.2.1- Cache de sets
        B.2.2- Initialisations (reconnaissance globale, évaluation des cibles, phase de jeu)
        B.2.3- Initialisations spécifiques
    B.3- Génération des données de choix de commande
    B.4- Evaluation des données de choix de commande
    B.5- Sélection de cible, recherche de chemins
        B.5.1- Cible temporaire
        B.5.2- Interface de recherche de chemins
        B.5.3- Recherche exhaustive de chemins
        B.5.4- Recherche optimisée sur de longues distances
        B.5.5- Approche finale de la cible principale
    B.6- Qualification des options adjacentes
    B.7- Anticipation de coups consécutifs
        B.7.1- Dédiée aux winners et hunters intelligents
        B.7.2- Recherche d'une série de commandes : analyse et décisions
        B.7.3- Méthodes de recherche thématiques
        B.7.4- Schedule tools
        B.7.5- Application de commandes anticipées
    B.8- Recherche du prochain coup
    B.9- Outils communs aux recherches de commande
    B.10- Outils liés au comportement
    B.11- Gestion de lancer de grenade
    B.12- Utilitaires basiques

Constructeur

Attributes Summary

CTX_BONUS

contexte de recherche de coups multiples bonus

CTX_BY_OBJ

contexte de recherche de coups multiples par objectifs

CTX_DESPERATE

contexte de recherche de coups multiples désespéré

CTX_OPTIMAL

contexte de recherche de coups multiples optimal

DIST_APPROACH

distance à la cible caractérisant la phase finale

OBJ_ATTACK

marque l’objectif attaque

OBJ_DEFENSE

marque l’objectif défense

OBJ_MOVE

marque l’objectif mouvement

OBJ_RANDOM

marque l’objectif aléatoire

OBJ_WORK

marque l’objectif travail

PA_ATTACK

pseudoaction de type attaque

PA_BONUS

pseudoaction de type prise de bonus

PA_DANGERS

pseudoaction de type destruction de dangers (pour rebattre les cartes)

PA_ESCAPE

pseudoaction de type fuite

PA_FREE_EXIT

pseudoaction de type libérer la sortie

PA_OPTIMAL_MOVE

pseudoaction de type mouvement

PA_RISKED_MOVE

pseudoaction de type déplacement risqué

PA_SAFE_MOVE

pseudoaction de type déplacement sans risques

PA_STAY_IN_PLACE

pseudoaction de type ne pas bouger

PA_TERRAFORM

pseudoaction de type dégager le chemin

PA_TYPES

liste des types de pseudoactions supportées

PHASIS_APPROACH

approche de la cible

PHASIS_FINAL

phase finale d’approche

PHASIS_HUNT

force un chasseur à poursuivre sa cible

PHASIS_IN_PROGRESS

partie en cours

PHASIS_START

début de partie

Methods Summary

analyse_cmd_for_robot(cmd, robot)

Analyse une commande

compute_cmd_for_autobot(robot, gamblenumber, …)

Définit la cmd à appliquer à un robot automatique suivant son comportement

init_robot_before_gamble(robot, …)

Met à jour la vitesse actuelle du robot ainsi que ses zones de déplacement et d’attaque

re_initialise()

Ré initialisation avant une nouvelle partie

set_labLevel(lablevel)

Définit ou re définit l’objet LabLevel associé

set_liste_robot(listrobot)

Définit la liste des robots

validate_action_for_robot(action, robot, …)

Initialisations après application d’une commande

Attributes Documentation

CTX_BONUS = 'CTX_BONUS'

contexte de recherche de coups multiples bonus

CTX_BY_OBJ = 'CTX_BY_OBJ'

contexte de recherche de coups multiples par objectifs

CTX_DESPERATE = 'CTX_DESPERATE'

contexte de recherche de coups multiples désespéré

CTX_OPTIMAL = 'CTX_OPTIMAL'

contexte de recherche de coups multiples optimal

DIST_APPROACH = 5

distance à la cible caractérisant la phase finale

OBJ_ATTACK = 'OBJ_ATTACK'

marque l’objectif attaque

OBJ_DEFENSE = 'OBJ_DEFENSE'

marque l’objectif défense

OBJ_MOVE = 'OBJ_MOVE'

marque l’objectif mouvement

OBJ_RANDOM = 'OBJ_RANDOM'

marque l’objectif aléatoire

OBJ_WORK = 'OBJ_WORK'

marque l’objectif travail

PA_ATTACK = 'PA_ATTACK'

pseudoaction de type attaque

PA_BONUS = 'PA_BONUS'

pseudoaction de type prise de bonus

PA_DANGERS = 'PA_DANGERS'

pseudoaction de type destruction de dangers (pour rebattre les cartes)

PA_ESCAPE = 'PA_ESCAPE'

pseudoaction de type fuite

PA_FREE_EXIT = 'PA_FREE_EXIT'

pseudoaction de type libérer la sortie

PA_OPTIMAL_MOVE = 'PA_OPTIMAL_MOVE'

pseudoaction de type mouvement

PA_RISKED_MOVE = 'PA_RISKED_MOVE'

pseudoaction de type déplacement risqué

PA_SAFE_MOVE = 'PA_SAFE_MOVE'

pseudoaction de type déplacement sans risques

PA_STAY_IN_PLACE = 'PA_STAY_IN_PLACE'

pseudoaction de type ne pas bouger

PA_TERRAFORM = 'PA_TERRAFORM'

pseudoaction de type dégager le chemin

PA_TYPES = ['PA_OPTIMAL_MOVE', 'PA_FREE_EXIT', 'PA_SAFE_MOVE', 'PA_RISKED_MOVE', 'PA_STAY_IN_PLACE', 'PA_TERRAFORM', 'PA_ATTACK', 'PA_BONUS', 'PA_DANGERS', 'PA_ESCAPE']

liste des types de pseudoactions supportées

PHASIS_APPROACH = 'PHASIS_APPROACH'

approche de la cible

PHASIS_FINAL = 'PHASIS_FINAL'

phase finale d’approche

PHASIS_HUNT = 'PHASIS_HUNT'

force un chasseur à poursuivre sa cible

PHASIS_IN_PROGRESS = 'PHASIS_IN_PROGRESS'

partie en cours

PHASIS_START = 'PHASIS_START'

début de partie

Methods Documentation

analyse_cmd_for_robot(cmd, robot)[source]

Analyse une commande

Retourne un tuple avec :

  • un boolean indiquant si la commande a apporté un changement

  • le dict généré par CommandHelper.translate_cmd

  • une liste décrivant les conséquences (bonus gagné, danger activé, robot tué, grenade à lancer, case à ajouter)

  • la case visée par le coup

compute_cmd_for_autobot(robot, gamblenumber, gamblecount, gambleid)[source]

Définit la cmd à appliquer à un robot automatique suivant son comportement

Paramètres
  • robot

  • gamblenumber – numéro du coup (à partir de 1)

  • gamblecount – nombre de coups consécutifs du joueur

  • gambleid – id unique d’un coup de la partie

Renvoie

cmd

init_robot_before_gamble(robot, gamblenumber, gamblecount)[source]

Met à jour la vitesse actuelle du robot ainsi que ses zones de déplacement et d’attaque

re_initialise()[source]

Ré initialisation avant une nouvelle partie

set_labLevel(lablevel)[source]

Définit ou re définit l’objet LabLevel associé

set_liste_robot(listrobot)[source]

Définit la liste des robots

validate_action_for_robot(action, robot, nextcase, botskilled, gambleid, gamblenumber, gamblecount)[source]

Initialisations après application d’une commande