Пример #1
0
 //La perception de l'etat actuel du bloc
 public void GetPerception(Environnement env)
 {
     this.satisfied    = CheckSatisfaction();
     this.free         = env.CheckFree(this);
     this.place1Weight = env.GetPlace1State();
     this.place2Weight = env.GetPlace2State();
 }
Пример #2
0
        //Choisir l'action a faire selon son etat actuel percu
        public void TakeAction(Environnement env)
        {
            if (!satisfied)
            {
                if (free) //si le bloc est non satisfait et libre on se deplace
                {
                    Move();
                    pushed = false;
                }

                else //si le bloc est non satisfait et non libre on pousse
                {
                    Push();
                }
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            //Creation de l'environnement
            Environnement env = new Environnement();

            //Creation des blocs
            Block        ba        = new Block("A", env);
            Block        bb        = new Block("B", env);
            Block        bc        = new Block("C", env);
            Block        bd        = new Block("D", env);
            List <Block> blockList = new List <Block>()
            {
                ba, bb, bc, bd
            };

            //Initialisation des bloc de dessous souhaités de chaque bloc (Agencement souhaité)
            ba.goalBlockName = "B";
            bb.goalBlockName = "C";
            bc.goalBlockName = "D";
            bd.goalBlockName = "";

            //Creation et remplissage de la pile initiale
            env.matrix = new Stack <Block>();
            env.matrix.Push(bd);
            env.matrix.Push(ba);
            env.matrix.Push(bb);
            env.matrix.Push(bc);


            //Tant que le but n'est pas atteint (la satisfaction de tous les blocs) les agents executent leurs Perception-Action
            while (!env.GoalAchieved(blockList))
            {
                env.PrintState();
                foreach (Block block in blockList)
                {
                    block.GetPerception(env);
                    block.TakeAction(env);
                }
            }

            Console.ReadLine();
        }
Пример #4
0
        public bool onTable = false;  // True si le block est sur la table (place1 ou place2) et non sur la pile principale


        //Le constructeur
        public Block(string name, Environnement env)
        {
            this.name = name;
            this.env  = env;
        }