public void PruebaQueSePosicioneCorrectamenteEnUnTablero()
        {
            BloqueDeCemento bloque = new BloqueDeCemento(new Casillero(0, 12));

            Assert.AreEqual(0, bloque.Posicion.Fila);
            Assert.AreEqual(12, bloque.Posicion.Columna);
        }
        public void QueElBloqueSeaDañandoPorUnaToleToleYSeaDestruido()
        {
            BloqueDeCemento bloque = new BloqueDeCemento(new Casillero(1, 1));

            ToleTole toleTole = new ToleTole();

            bloque.DaniarConToleTole(toleTole);

            Assert.IsTrue(bloque.FueDestruido());
        }
        public void QueElBloqueSeaDañandoPorUnaMolotovYQuedeConResistencia5()
        {
            BloqueDeCemento bloque = new BloqueDeCemento(new Casillero(1, 1));

            Molotov molotov = new Molotov();

            bloque.DaniarConMolotov(molotov);

            Assert.IsFalse(bloque.FueDestruido());
            Assert.AreEqual(5, bloque.Resistencia);
        }
        public void QueElBloqueNoSeaDañandoPorUnProyectilYQuedeResistencia5()
        {
            BloqueDeCemento bloque = new BloqueDeCemento(new Casillero(1, 1));

            Proyectil proyectil = new Proyectil();

            bloque.DaniarConProyectil(proyectil);

            Assert.IsFalse(bloque.FueDestruido());
            Assert.AreEqual(5, bloque.Resistencia);
        }
        public void QueUnBloqueDeCementoSeaDestruidoYDejeUnArticulo()
        {
            Tablero tablero = new Tablero();
            BloqueDeCemento bloque = new BloqueDeCemento();
            tablero.AgregarEntidadEnCasillero(bloque, 0, 0);
            Timer timer = new Timer();
            bloque.Articulo = timer;

            Assert.IsNull(timer.Posicion);

            bloque.DaniarConToleTole(new ToleTole());//Lo destruyo

            Assert.AreEqual(tablero.ObtenerCasillero(0, 0).Entidad, timer);
            Assert.AreEqual(0, timer.Posicion.Fila);
            Assert.AreEqual(0, timer.Posicion.Columna);
        }
        public void PruebaQueLaResistenciaDeUnBloqueDeCementoSea10()
        {
            BloqueDeCemento bloque = new BloqueDeCemento();

            Assert.AreEqual(10, bloque.Resistencia);
        }
        public void PruebaLaCreacionDeUnBloqueDeCemento()
        {
            BloqueDeCemento bloque = new BloqueDeCemento();

            Assert.IsNotNull(bloque);
        }
        public void TratarDeSeguirDaniandoAUnBloqueDestruidoLanceUnaExcepcion()
        {
            BloqueDeCemento bloque = new BloqueDeCemento(new Casillero(1, 1));
            ToleTole toleTole = new ToleTole();
            bloque.DaniarConToleTole(toleTole); //Ya lo destruyo

            Assert.Throws<EntidadYaDestruidaException>(() => bloque.DaniarConToleTole(toleTole));
        }
        // Sortea la posibilidad de colocar un obstaculo en el casillero y lo agrega si corresponde.
        private void SortearObstaculoEnCasillero(int i, int j)
        {
            BloqueDeLadrillos bloqueLadrillos;
            BloqueDeCemento bloqueCemento;
            if (random.Next(1, PROBABILIDAD_BLOQUE_LADRILLO) == 1)
            {
                bloqueLadrillos = new BloqueDeLadrillos();
                AgregarEntidadEnCasillero(bloqueLadrillos, i, j);
                listaBloqueDeLadrillos.Add(bloqueLadrillos);
                SortearArticuloEnCasillero(i, j);
            }

            else if (random.Next(1, PROBABILIDAD_BLOQUE_CEMENTO) == 1)
            {
                bloqueCemento = new BloqueDeCemento();
                AgregarEntidadEnCasillero(bloqueCemento, i, j);
                listaBloqueDeCemento.Add(bloqueCemento);
                SortearArticuloEnCasillero(i, j);
            }
        }
 // Agrega un obstaculo con salida en una posicion aleatoria del tablero.
 public void AgregarSalida()
 {
     while (true)
     {
         int fila = SortearFila();
         int columna = SortearColumna();
         if (ObtenerCasillero(fila, columna).EstaVacio() == true)
         {
             int resultado = random.Next(1, 3);
             Obstaculo bloque = null;
             if (resultado == 1)
             {
                 bloque = new BloqueDeCemento();
                 AgregarEntidadEnCasillero(bloque, fila, columna);
                 listaBloqueDeCemento.Add((BloqueDeCemento)bloque);
             }
             if (resultado == 2)
             {
                 bloque = new BloqueDeLadrillos();
                 AgregarEntidadEnCasillero(bloque, fila, columna);
                 listaBloqueDeLadrillos.Add((BloqueDeLadrillos)bloque);
             }
             //AgregarArticuloEnCasillero(new Salida(), fila, columna);
             Salida salida = new Salida();
             bloque.Articulo = salida;
             salidaTablero = salida;
             salida.Posicion = ObtenerCasillero(fila, columna);
             salida.Tablero = this;
             break;
         }
     }
 }
        public void CreaUnTableroConBombitaYUnBloqueConUnArticuloYQueBombitaLoAgarre()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita,0,0);

            BloqueDeCemento bloque = new BloqueDeCemento();
            tablero.AgregarEntidadEnCasillero(bloque, 0, 1);
            Habano habano = new Habano();
            bloque.Articulo = habano;

            bloque.DaniarConToleTole(new ToleTole());

            bombita.MoverDerecha();

            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(1, bombita.Posicion.Columna);
            Assert.AreEqual(10, bombita.Velocidad);
        }