public Nodo(Nodo iPadre, Habitacion iHabitacion) { Padre = iPadre; Actual = iHabitacion; Actual.Mapeada = true; }
/// <summary> /// Busca y selecciona aleatoriamente una LQ adyacente /// </summary> /// <returns></returns> public void Conectar_Nueva_LQ() { Habitacion h_rnd_lq = null; Random r = new Random(DateTime.Now.Millisecond); bool b_hay_lq = false; while (!b_hay_lq) //Mientras que no encuentre una LQ adyacente, sigue buscando { int rnd_lq_ady = r.Next(1, 5); //Aleatoriamente elije donde buscar switch (rnd_lq_ady) //Solo son 4 las posibles celdas adyacentes a una habitacion { case 1: //Está arriba de la nueva LQ if (Y - 1 >= 0) { h_rnd_lq = Laberinto.Matriz[Y - 1].Habitaciones[X]; if (!h_rnd_lq.Tipo.Equals(TipoCasilla.LQ)) { continue; } h_rnd_lq.Puerta_Aba = true; Puerta_Arr = true; b_hay_lq = true; //Encontró LQ, entonces rompe el ciclo } break; case 2: //Está abajo de la nueva LQ if (Y < Laberinto.Matriz.Count - 1) { h_rnd_lq = Laberinto.Matriz[Y + 1].Habitaciones[X]; if (!h_rnd_lq.Tipo.Equals(TipoCasilla.LQ)) { continue; } h_rnd_lq.Puerta_Arr = true; Puerta_Aba = true; b_hay_lq = true; //Encontró LQ, entonces rompe el ciclo } break; case 3: //Está a la izquierda de la nueva LQ if (X - 1 >= 0) { h_rnd_lq = Laberinto.Matriz[Y].Habitaciones[X - 1]; if (!h_rnd_lq.Tipo.Equals(TipoCasilla.LQ)) { continue; } h_rnd_lq.Puerta_Der = true; Puerta_Izq = true; b_hay_lq = true; //Encontró LQ, entonces rompe el ciclo } break; case 4: //Está a la derecha de la nueva LQ if (X < Laberinto.Matriz[0].Habitaciones.Count - 1) { h_rnd_lq = Laberinto.Matriz[Y].Habitaciones[X + 1]; if (!h_rnd_lq.Tipo.Equals(TipoCasilla.LQ)) { continue; } h_rnd_lq.Puerta_Izq = true; Puerta_Der = true; b_hay_lq = true; //Encontró LQ, entonces rompe el ciclo } break; } } //h_rnd_lq.Dibujar(ConsoleColor.Yellow); //Color para debug... }