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); }
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); } }