Ejemplo n.º 1
0
 public Nodo(Nodo iPadre, Habitacion iHabitacion)
 {
     Padre          = iPadre;
     Actual         = iHabitacion;
     Actual.Mapeada = true;
 }
Ejemplo n.º 2
0
        /// <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...
        }