示例#1
0
        public acciones Regla(Bloque area, reglas r)
        {
            acciones nuevasAcciones = new acciones();

            nuevasAcciones.accion = new List <string>();
            int cond = 0, sectores = 0;

            foreach (var r_cond in r.regla)                   // lista de condiciones
            {
                foreach (var r_bloq in r_cond.bloque)         // lista de bloques regla
                {
                    foreach (var r_sector in r_bloq.sector)   // sectores de cada bloque regla
                    {
                        foreach (var e_sector in area.sector) // lista de sectores del sensor
                        {
                            //Debug.Write(e_sector.posicion + " ");
                            if ((r_sector.posicion == e_sector.posicion) && (r_sector.value == e_sector.value))
                            {
                                sectores++;
                            }
                        }
                    }
                    if (sectores == r_bloq.sector.Count)
                    {
                        cond++;
                    }
                    sectores = 0;
                }
                if (cond == r_cond.bloque.Count)
                {
                    nuevasAcciones.accion.Add(r_cond.accion); cond = 0;
                }
            }
            return(nuevasAcciones);
        }
示例#2
0
        public override void Sensor(Bloque area)
        {
            //asigna los estados
            //estados e = Percepciones(sprite);
            // acciones necesitan reglas
            reglas r = new reglas();

            //// ---------------------------------------------------------------------
            //r.regla = new List<condiciones>();
            //// condiciones
            //// condicion 1
            //condiciones cond = new condiciones(); // tecnicamente esto es una regla
            //cond.bloque = new List<Bloque>();
            //Bloque bA = new Bloque();
            //bA.sector = new List<Sector>();
            //Sector sA = new Sector();
            //Sector sB = new Sector();
            //Sector sC = new Sector();
            //cond.accion = "avanzar";
            //sA.value = false;
            //sA.name = "wall";
            //sA.posicion = new Vector2(1,0);
            //sB.value = false;
            //sB.name = "wall";
            //sB.posicion = new Vector2(1,2);
            //bA.sector.Add(sA); // agrega sector 1,0
            //bA.sector.Add(sB); // agrega sector 1,2
            //cond.bloque.Add(bA); // agrega bloque a la lista de bloques.
            //r.regla.Add(cond); // agrega la condicion a la regla.
            //r.regla.Add(cond); // agrega la condicion a la regla.
            //// fin condiciones
            //  ---------------------------------------------------------------------
            //XML.Serialize(r, "reglas.dat");
            r = XML.Deserialize <reglas>("reglas.dat");
            acciones action = new acciones();

            action = Regla(area, r);
            //
            Comportamiento(action);
        }