// agrega la entidad en una posicion generada aleatoriamente
 public void AgregarEntidad(Entidad entidad)
 {
     this.GenerarPosicionPara(entidad);
     this.entidades.Add(entidad);
 }
 // permite agregar una entidad al tablero
 // Se agrega a la entidad en la casilla correspondiente a las coordenadas pasadas
 public void AgregarEntidad(Entidad entidad, int fila, int columna)
 {
     try
     {
         entidad.PosicionarEn(this.Casilla(fila, columna));
         this.entidades.Add(entidad);
     }
     catch (CasillaFueraDeRangoError e)
     {
         e.NoHacerNada();
     }
 }
 // remueve la entidad pasada de la casilla pasada
 public void RemoverEntidad(Entidad entidad)
 {
     entidad.Destruir();
     int X = entidad.Posicion().X;
     int Y = entidad.Posicion().Y;
     Casilla posicionAModificar = this.Casilla(X, Y);
     posicionAModificar.RemoverEntidad(entidad);
     this.entidades.Remove(entidad);
 }
 // este metodo genera posiciones aleatorias para la entidad pasada
 // hasta que la misma es posicionada en una casilla vacia
 private void GenerarPosicionPara(Entidad entidad)
 {
     bool fueUbicado = false;
     while(!fueUbicado)
     {
         try
         {
             Casilla casilla = this.Casilla(this.FilaSorteada(), this.ColumnaSorteada());
             if(casilla.EstaVacia())
             {
                 entidad.PosicionarEn(casilla);
                 fueUbicado = true;
             }
         }
         catch (CasillaFueraDeRangoError e)
         {
             e.NoHacerNada();
         }
     }
 }
 // agrega la salida
 public void AgregarSalida()
 {
     if (!seAgregoLaSalida)
     {
         if (this.obstaculoQueOcultaSalida.FueDestruido())
         {
             this.seAgregoLaSalida = true;
             int X = this.obstaculoQueOcultaSalida.Posicion().X;
             int Y = this.obstaculoQueOcultaSalida.Posicion().Y;
             this.AgregarEntidad(new Salida(), X, Y);
             this.obstaculoQueOcultaSalida = null;
         }
     }
 }
        // agrega la salida que estara oculta por un obstaculo de ladrillo o de cemento
        public void AgregarObstaculoQueOcultaSalida()
        {
            Random rand = new Random();
            int prioridadDeSalida = rand.Next(OBSTACULOS_QUE_ADMITEN_SALIDA);
            Entidad obstaculoQueOcultaSalida = null;

            if (prioridadDeSalida == SALIDA_DE_LADRILLO)
                obstaculoQueOcultaSalida = new ObstaculoDeLadrillo(true);
            if (prioridadDeSalida == SALIDA_DE_CEMENTO)
                obstaculoQueOcultaSalida = new ObstaculoDeCemento(true);

            this.AgregarEntidad(obstaculoQueOcultaSalida);
            this.obstaculoQueOcultaSalida = obstaculoQueOcultaSalida;
        }
 // retorna si esta en la misma posicion que la entidad pasada
 public bool MismaPosicionQue(Entidad entidad)
 {
     return (this.posicion == entidad.Posicion());
 }
 // agrega una entidad a la casilla
 public void AgregarEntidad(Entidad entidad)
 {
     this.entidades.Add(entidad);
 }
 // remueve la entidad pasada
 public void RemoverEntidad(Entidad entidad)
 {
     entidad.Destruir();
     this.entidades.Remove(entidad);
 }