Ejemplo n.º 1
0
        /* int calculHeuristic()
         * {
         *  int onDustOrJewels = 0;
         *  int distance = 0;
         *  foreach (Coordonnees c in dust)
         *  {
         *      if (c.distance(posAgent) == 0)
         *          onDustOrJewels++;
         *      else distance += c.distance(posAgent);
         *  }
         *
         *  foreach (Coordonnees c in jewels)
         *  {
         *      if (c.distance(posAgent) == 0)
         *          onDustOrJewels++;
         *      else distance += c.distance(posAgent);
         *  }
         *
         *  return weightHeuritic * (jewels.Count + dust.Count) + distance -  weightHeuritic * onDustOrJewels;
         * }*/
        private int calculHeuristic(EnumIA.Action a)
        {
            int score = heuristic;

            if (true)
            {
                switch (a)
                {
                case EnumIA.Action.bas:
                    score--;
                    break;

                case EnumIA.Action.haut:
                    score--;
                    break;

                case EnumIA.Action.gauche:
                    score--;
                    break;

                case EnumIA.Action.droite:
                    score--;
                    break;

                case EnumIA.Action.aspirer:
                    score += 10;
                    break;

                case EnumIA.Action.recuperer:
                    score += 30;
                    break;
                }
            }

            /*int distance = 0;
             * foreach (Coordonnees c in dust)
             * {
             *   distance += c.distance(posAgent);
             * }
             *
             * foreach (Coordonnees c in jewels)
             * {
             *   distance += c.distance(posAgent);
             * }*/

            return(score);
        }
Ejemplo n.º 2
0
        public Coordonnees move(EnumIA.Action ea)
        {
            switch (ea)
            {
            case EnumIA.Action.gauche:
                return(new Coordonnees(this.X - 1, this.Y));

            case EnumIA.Action.droite:
                return(new Coordonnees(this.X + 1, this.Y));

            case EnumIA.Action.bas:
                return(new Coordonnees(this.X, this.Y + 1));

            case EnumIA.Action.haut:
                return(new Coordonnees(this.X, this.Y - 1));

            default:
                return(this);
            }
        }
Ejemplo n.º 3
0
 public void act(EnumIA.Action ea, Coordonnees c)
 {
     if (ag == null)
     {
         ag = Agent.Instance;
     }
     if (ea == EnumIA.Action.aspirer)
     {
         env.aspire(c);
     }
     if (ea == EnumIA.Action.recuperer)
     {
         env.ramasse(c);
     }
     else
     {
         ag.Coordonnees = c.move(ea);
         env.move();
     }
 }
Ejemplo n.º 4
0
 public void empile(EnumIA.Action ea)
 {
     _intentions.Enqueue(ea);
 }