コード例 #1
0
 /// <summary>
 /// Supprime une action de la stratégie
 /// </summary>
 /// <param name="action">Action à supprimer</param>
 public void Supprimer(ActionRobot action)
 {
     Actions.Remove(action);
     while (Actions.Count == 0)
     {
         Thread.Sleep(20);
     }
 }
コード例 #2
0
        /// <summary>
        /// Compare la priorité de l'action à celle d'une autre action en tenant compte des condition d'éxecution
        /// </summary>
        /// <param name="autre">Action à comparer</param>
        /// <returns>Résultat de la comparaison ({ -1; 0; 1 })</returns>
        public int CompareTo(ActionRobot autre)
        {
            int  priorite, autrePriorite;
            bool possible, autrePossible;

            if (autre == null)
            {
                return(1);
            }

            priorite      = Priorite;
            autrePriorite = autre.Priorite;

            possible      = ExecutionPossible();
            autrePossible = autre.ExecutionPossible();

            return(!possible && !autrePossible ? 0 :
                   possible && !autrePossible ? 1 :
                   !possible && autrePossible ? -1 :
                   priorite > autrePriorite ? 1 :
                   priorite < autrePriorite ? -1 : 0);
        }
コード例 #3
0
        private ActionRobot ActionOptimale()
        {
            ActionRobot optimale = null;
            // attention le coup de l'indice c'est assez moche
            // mais apparemment le foreach bugue en parcourant Actions, et renvoie null pour chaque action removed
            int j = 0;

            foreach (ActionRobot action in Actions)
            {
                if (j < Actions.Count)
                {
                    j++;
                    if (action.ExecutionPossible() && action > optimale)
                    {
                        //              Debug.Print("if passée pour une certaine action");
                        optimale = action;
                    }
                }
            }
            //    Debug.Print("action optimale boucle for ok");

            return(optimale);
        }
コード例 #4
0
 /// <summary>
 /// Recherche un élément existant dans la liste des actions
 /// </summary>
 /// <param name="action">Action à rechercher</param>
 /// <returns>Retourne si la stratégie contient l'action spécifiée</returns>
 public bool Contient(ActionRobot action)
 {
     return(Actions.Contains(action));
 }
コード例 #5
0
 /// <summary>
 /// Ajoute une action à la stratégie
 /// </summary>
 /// <param name="action">Action à ajouter</param>
 public void Ajouter(ActionRobot action)
 {
     Actions.Add(action);
 }