示例#1
0
        public void CambioAleatorio()
        {
            Acciones.Enqueue("Ocurre un Cambio Aleatorio De Ambiente");

            Ocupadas = new bool[N, M];
            Casillas = new Elemento[N, M];
            int corral = PosCorral.Count;
            int sucio  = PosSuciedad.Count;
            int cantN  = PosNiños.Count;

            PosCorral.Clear();
            PosNiños.Clear();
            PosObstaculo.Clear();
            PosSuciedad.Clear();

            foreach (var item in Robots)
            {
                Ocupadas[item.X, item.Y] = true;
                Casillas[item.X, item.Y] = Elemento.Robot;
            }

            Acciones.Enqueue("Reubicando elementos");
            PonerCorral(corral, totalNiños - corral);
            PonerElemento(obstaculos, Elemento.Obstaculo);
            PonerElemento(sucio, Elemento.Suciedad);
            PonerElemento(cantN, Elemento.Niño);
        }
示例#2
0
        protected void PonerCorral(int x, int y, int cantS, int cantD)
        {
            int  a     = x;
            int  b     = y;
            bool vacio = ProximoCorral(x, y, ref a, ref b);

            if (cantS >= 0 && vacio)
            {
                Casillas[a, b] = Elemento.Corral;
                Ocupadas[a, b] = true;
                PosCorral.Add(new Tuple <int, int>(a, b));
                Acciones.Enqueue("Se ubica corral vacio en la posicion (" + a + "," + b + ")");
                int c = cantS;
                c--;
                PonerCorral(a, b, c, cantD);
            }
            else if (cantD >= 0 && vacio)
            {
                Casillas[a, b] = Elemento.CorralOcupado;
                Ocupadas[a, b] = true;
                Acciones.Enqueue("Se ubica corral ocupado en la posicion (" + a + "," + b + ")");
                int c = cantD;
                c--;
                PonerCorral(a, b, cantS, c);
            }
            else if (!vacio && (cantS > -1 || cantD > -1))
            {
                PonerCorral(a, b, cantS, cantD);
            }
        }