public void QueElBloqueSeaDañandoPorUnProyectilYSeaDestruido()
        {
            BloqueDeLadrillos bloque = new BloqueDeLadrillos(new Casillero(1, 1));

            Proyectil proyectil = new Proyectil();

            bloque.DaniarConProyectil(proyectil);

            Assert.IsTrue(bloque.FueDestruido());
        }
예제 #2
0
        //la lanza solo si bombita esta en su misma fila o columna
        public override void LanzarBomba()
        {
            if (bomba.FueDestruido())//Le permite agregar otra bomba si la anterior ya ha explotado
            {
                bomba = new Proyectil();
                bomba.Duenio = this;
            }
            else if (bomba.EstaActivada)
            {
                return;
            }
            this.tablero.AgregarEntidadEnCasillero(bomba, posicion.Fila, posicion.Columna);
            tablero.AgregarBomba(bomba);
            int filaBombita = tablero.PosicionBombita.Fila;
            int columnaBombita = tablero.PosicionBombita.Columna;
            Proyectil proyectil = (Proyectil)this.bomba;
            bomba.ActivarBomba();

            /*
            if (filaBombita == posicion.Fila)
            {
                if ((columnaBombita - posicion.Columna) < 0)
                {
                    for (int i = 0; i < bomba.Rango; i++)
                    {
                        proyectil.MoverIzquierda();
                    }
                }
                else
                {
                    for (int i = 0; i < bomba.Rango; i++)
                    {
                        proyectil.MoverDerecha();
                    }
                }
            }
            if (columnaBombita == posicion.Columna)
            {
                if ((filaBombita - posicion.Fila) < 0)
                {
                    for (int i = 0; i < bomba.Rango; i++)
                    {
                        proyectil.MoverArriba();
                    }
                }
                else
                {
                    for (int i = 0; i < bomba.Rango; i++)
                    {
                        proyectil.MoverAbajo();
                    }
                }
            }*/
        }
        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 QueElBloqueNoSeaDañandoPorUnProyectil()
        {
            BloqueDeAcero bloque = new BloqueDeAcero();
            int resistenciaAnterior = bloque.Resistencia;

            Proyectil proyectil = new Proyectil();

            bloque.DaniarConProyectil(proyectil);

            Assert.IsFalse(bloque.FueDestruido());
            Assert.AreEqual(resistenciaAnterior, bloque.Resistencia);
        }
예제 #5
0
        public void QueLopezRSeaDañandoPorUnProyectilLeQuiteUnaVida()
        {
            LopezR lopez = new LopezR();

            Proyectil proyectil = new Proyectil();

            lopez.DaniarConProyectil(proyectil);

            Assert.AreEqual(5,lopez.Resistencia);
        }
예제 #6
0
        public void QueCecilioSeaDañandoPorUnProyectilLeQuiteUnaVida()
        {
            Cecilio cecilio = new Cecilio();

            Proyectil proyectil = new Proyectil();

            cecilio.DaniarConProyectil(proyectil);

            Assert.IsTrue(cecilio.FueDestruido());
        }
예제 #7
0
        public void PruebaQueUnProyectilCuandoSeActivaLuegoDeQuePaseUnTiempo0EsteDestruida()
        {
            Tablero tablero = new Tablero();
            Proyectil bomba = new Proyectil();
            tablero.AgregarEntidadEnCasillero(bomba, 0, 0);

            bomba.ActivarBomba();

            bomba.CuandoPaseElTiempo(0);

            Assert.IsTrue(bomba.FueDestruido());
        }
예제 #8
0
        public void PruebaQueUnProyectilSoloPuedaMoverse4Casilleros()
        {
            Tablero tablero = new Tablero();
            Proyectil proyectil = new Proyectil();
            tablero.AgregarEntidadEnCasillero(proyectil, 0, 0);

            proyectil.MoverAbajo();
            proyectil.MoverAbajo();
            proyectil.MoverAbajo();
            proyectil.MoverAbajo();

            proyectil.CuandoPaseElTiempo(0);

            Assert.IsTrue(proyectil.FueDestruido());
        }
예제 #9
0
        public void PruebaQueUnProyectilPuedaMoverseAUnCasilleroVacio()
        {
            Tablero tablero = new Tablero();
            Proyectil proyectil = new Proyectil();
            tablero.AgregarEntidadEnCasillero(proyectil, 0, 0);

            Assert.Throws<CasilleroFueraDeRangoException>(() => proyectil.PuedeMoverseA(proyectil.Posicion.ObtenerCasilleroAdyacenteEnLaDireccionYElTablero(Entidad.OESTE, tablero)));
            Assert.IsTrue(proyectil.PuedeMoverseA(proyectil.Posicion.ObtenerCasilleroAdyacenteEnLaDireccionYElTablero(Entidad.ESTE, tablero)));
        }
예제 #10
0
        public void PruebaQueUnProyectilNoPuedaMoverseAUnCasilleroConUnaEntidad()
        {
            Tablero tablero = new Tablero();
            Proyectil proyectil = new Proyectil();
            BloqueDeAcero bloque = new BloqueDeAcero();
            tablero.AgregarEntidadEnCasillero(proyectil, 0, 0);
            tablero.AgregarEntidadEnCasillero(bloque, 0, 1);

            Assert.IsFalse(proyectil.PuedeMoverseA(proyectil.Posicion.ObtenerCasilleroAdyacenteEnLaDireccionYElTablero(Entidad.ESTE, tablero)));
            Assert.IsTrue(proyectil.PuedeMoverseA(proyectil.Posicion.ObtenerCasilleroAdyacenteEnLaDireccionYElTablero(Entidad.SUR, tablero)));
        }
예제 #11
0
        public void PruebaQueUnProyectilCuandoSeEncuentraConUnBloqueLoDania()
        {
            Tablero tablero = new Tablero();
            Proyectil proyectil = new Proyectil();
            BloqueDeLadrillos bloque = new BloqueDeLadrillos();
            tablero.AgregarEntidadEnCasillero(proyectil, 0, 0);
            tablero.AgregarEntidadEnCasillero(bloque, 0, 1);

            proyectil.MoverDerecha();
            proyectil.CuandoPaseElTiempo(0);

            Assert.IsTrue(bloque.FueDestruido());
        }
        public void QueLopezRAladoSeaDañandoPorUnProyectilLeQuiteUnaVida()
        {
            LopezRAlado lopez = new LopezRAlado();

            Proyectil proyectil = new Proyectil();

            lopez.DaniarConProyectil(proyectil);

            Assert.IsTrue(lopez.FueDestruido());
        }
        public void PruebaQueCuandoUnProyectilExploteDanieAUnBombitaQueEsteAlLado()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 4, 1);// Arranca en (0,0)
            Proyectil bomba = new Proyectil();
            tablero.AgregarEntidadEnCasillero(bomba, 0, 2);

            bomba.MoverAbajo();
            bomba.MoverAbajo();
            bomba.MoverAbajo();
            bomba.MoverAbajo();

            Assert.AreEqual(4, bomba.Posicion.Fila);
            Assert.AreEqual(2, bomba.Posicion.Columna);

            bomba.CuandoPaseElTiempo(0);

            Assert.AreEqual(2, bombita.Vidas);
        }
        public void CreaUnTableroConBombitaYUnProyectilYSeColisionanEntoncesBombitaPierdeUnaVida()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            Proyectil bomba = new Proyectil();
            tablero.AgregarEntidadEnCasillero(bomba, 0, 2);

            bomba.MoverIzquierda();
            bomba.MoverIzquierda();

            bomba.CuandoPaseElTiempo(0);

            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(0, bombita.Posicion.Columna);
            Assert.AreEqual(2, bombita.Vidas);
            Assert.IsNull(bomba.Posicion);
        }
예제 #15
0
        private void MoverProyectil(Proyectil proyectil)
        {
            if (proyectil.Duenio.Direccion == "este")
            {
                if (proyectil.posicionEnVentana.X + Game1.TexturasBombas["proyectil"].Width >= tablero.Dimension * proyectil.Posicion.textura.Width) return;
                Casillero casilleroSup;
                try
                {
                    casilleroSup = tablero.ObtenerCasillero(proyectil.Posicion.Fila, proyectil.Posicion.Columna + 1);
                }
                catch (Exception)
                {
                    return;
                }

                if ((casilleroSup != null) && (proyectil.posicionEnVentana.X + Game1.TexturasBombas["proyectil"].Width / 2 >= casilleroSup.posicionEnVentana.X + casilleroSup.textura.Width / 2))
                {
                    proyectil.MoverDerecha();
                }

                proyectil.posicionEnVentana.X += proyectil.Velocidad;

            }
            if (proyectil.Duenio.Direccion == "oeste")
            {
                if (proyectil.posicionEnVentana.X <= 0) return;
                Casillero casilleroSup;
                try
                {
                    casilleroSup = tablero.ObtenerCasillero(proyectil.Posicion.Fila , proyectil.Posicion.Columna -1);
                }
                catch (Exception)
                {
                    return;
                }
                if ((casilleroSup != null) && (proyectil.posicionEnVentana.X + Game1.TexturasBombas["proyectil"].Width / 2 <= casilleroSup.posicionEnVentana.X + casilleroSup.textura.Width / 2))
                {
                    proyectil.MoverIzquierda();
                }

                proyectil.posicionEnVentana.X -= proyectil.Velocidad;

            }
            if (proyectil.Duenio.Direccion == "norte")
            {
                if (proyectil.posicionEnVentana.Y <= 0) return;
                Casillero casilleroSup;
                try
                {
                    casilleroSup = tablero.ObtenerCasillero(proyectil.Posicion.Fila - 1, proyectil.Posicion.Columna);
                }
                catch (Exception)
                {
                    return;
                }
                if ((casilleroSup != null) && (proyectil.posicionEnVentana.Y + Game1.TexturasBombas["proyectil"].Height / 2 <= casilleroSup.posicionEnVentana.Y + casilleroSup.textura.Height / 2))
                {
                    proyectil.MoverArriba();
                }

                proyectil.posicionEnVentana.Y -= proyectil.Velocidad;

            }
            if (proyectil.Duenio.Direccion == "sur")
            {
                if (proyectil.posicionEnVentana.Y + Game1.TexturasBombas["proyectil"].Height >= tablero.Dimension * proyectil.Posicion.textura.Height) return;
                Casillero casilleroSup;
                try
                {
                    casilleroSup = tablero.ObtenerCasillero(proyectil.Posicion.Fila + 1, proyectil.Posicion.Columna);
                }
                catch (Exception)
                {
                    return;
                }

                if ((casilleroSup != null) && (proyectil.posicionEnVentana.Y + Game1.TexturasBombas["proyectil"].Height / 2 >= casilleroSup.posicionEnVentana.Y + casilleroSup.textura.Height / 2))
                {
                    proyectil.MoverAbajo();
                }

                proyectil.posicionEnVentana.Y += proyectil.Velocidad;
            }
        }
예제 #16
0
        public void PruebaQueUnProyectilCuandoSeEncuentraUnPersonajeLoDania()
        {
            Tablero tablero = new Tablero();
            Proyectil proyectil = new Proyectil();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(proyectil, 0, 0);
            tablero.AgregarEntidadEnCasillero(bombita, 1, 0);

            proyectil.MoverAbajo();
            proyectil.CuandoPaseElTiempo(0);

            Assert.AreEqual(2, bombita.Vidas);
        }
예제 #17
0
 public override void DaniarConProyectil(Proyectil proyectil)
 {
     DaniarConBomba();
 }
예제 #18
0
        public void QueBombitaSeaDañandoPorUnProyectilLeQuiteUnaVida()
        {
            Bombita bombita = new Bombita();

            Proyectil proyectil = new Proyectil();

            bombita.DaniarConProyectil(proyectil);

            Assert.Less(bombita.Vidas, 3);
        }