public void TestElProyectilComienzaAMoverseHastaQueEnSuProximaPosicionSeEncuentraConBombitaYExplotaDestruyendolo()
        {
            Proyectil proyectil = new Proyectil();
            tablero.AgregarEntidad(proyectil, 1, 1);

            Bombita bombita = Bombita.GetInstancia();
            tablero.AgregarEntidad(bombita, 1, 4);

            proyectil.Mover();
            Assert.AreEqual(proyectil.Posicion().X, 1);
            Assert.AreEqual(proyectil.Posicion().Y, 2);
            proyectil.Explotar();
            // el proyectil todavia no explota porque no encontro en su proxima posicion a otra entidad
            Assert.IsFalse(proyectil.FueDestruido());
            Assert.IsFalse(bombita.FueDestruido());

            proyectil.Mover();
            Assert.AreEqual(proyectil.Posicion().X, 1);
            Assert.AreEqual(proyectil.Posicion().Y, 3);
            proyectil.Explotar();
            // el proyectil explota porque en su proxima posicion esta bombita
            Assert.IsTrue(proyectil.FueDestruido());
            Assert.IsTrue(bombita.FueDestruido());

            // limpia el tablero
            tablero.Actualizar();
        }
 // se aplica la estrategia solo si el aplicador esta a una distancia
 // valida para disparar y no ser daniado por el proyectil
 public void Aplicar()
 {
     Casilla posicionDelProyectil = this.aplicador.Posicion();
     int[] direccionDelProyectil = this.aplicador.Direccion();
     int rangoDelProyectil = Proyectil.RANGO;
     try
     {
         Casilla posicionAdyacente = posicionDelProyectil.CasillaAdyacenteEnLaDireccion(direccionDelProyectil);
         bool puedeAplicarse = true;
         while (rangoDelProyectil >= 0 && puedeAplicarse)
         {
             if (!posicionAdyacente.EstaVacia())
                 puedeAplicarse = false;
             rangoDelProyectil--;
             posicionAdyacente = posicionAdyacente.CasillaAdyacenteEnLaDireccion(direccionDelProyectil);
         }
         if (puedeAplicarse)
         {
             Proyectil proyectil = new Proyectil();
             Tablero.GetInstancia().AgregarEntidad(proyectil, posicionDelProyectil.X, posicionDelProyectil.Y);
             proyectil.Direccionar(this.aplicador.Direccion());
             proyectil.CuandoPaseElTiempo(this.aplicador.PorcentajeDeRetardo());
             proyectil.AnotarLanzador(this.aplicador);
         }
         else
             this.aplicador.NotificarExplosion(true);
     }
     catch (CasillaFueraDeRangoError e)
     {
         e.NoHacerNada();
         this.aplicador.NotificarExplosion(true);
     }
 }
        public void TestElProyectilComienzaAMoverseEnSuDireccionPredeterminadaYNoPuedeMoverseEnOtraDireccion()
        {
            Proyectil proyectil = new Proyectil();
            tablero.AgregarEntidad(proyectil, 1, 1);

            proyectil.Mover();

            // asserts
            Assert.AreEqual(proyectil.Posicion().X, 1);
            Assert.AreEqual(proyectil.Posicion().Y, 2);

            // limpia el tablero
            Tablero.Vaciar();
        }
        public void TestCreaUnProyectil()
        {
            Bomba proyectil = new Proyectil();

            // asserts
            Assert.IsFalse(proyectil.EsArticulo());
            Assert.IsTrue(proyectil.EsBomba());
            Assert.IsFalse(proyectil.EsBombita());
            Assert.IsFalse(proyectil.EsEnemigo());
            Assert.IsFalse(proyectil.EsObstaculo());
            Assert.IsFalse(proyectil.EsPersonaje());
            Assert.IsFalse(proyectil.FueDestruido());
            Assert.IsFalse(proyectil.PuedeSuperponerse());
        }
 public override void DaniarPorProyectil(Proyectil bomba)
 {
 }
예제 #6
0
 public abstract override void DaniarPorProyectil(Proyectil bomba);
예제 #7
0
 public override void DaniarPorProyectil(Proyectil proyectil)
 {
 }
 public override void DaniarPorProyectil(Proyectil bomba)
 {
     this.durabilidad = this.durabilidad - bomba.GetDanio();
 }
예제 #9
0
 public override void DaniarPorProyectil(Proyectil proyectil)
 {
     this.exploto = true;
     this.lanzador.NotificarExplosion(true);
 }
예제 #10
0
 public override void DaniarPorProyectil(Proyectil bomba)
 {
     this.resistencia = this.resistencia - bomba.GetDanio();
 }
예제 #11
0
        public void TestElProyectilExplotaPorqueSuProximaPosicionEstaFueraDeRango()
        {
            Proyectil proyectil = new Proyectil();
            tablero.AgregarEntidad(proyectil, 0, 0);

            // esto se hace para que el proyectil apunte hacia arriba
            int[] arriba = { -1, 0 };
            proyectil.Direccionar(arriba);

            // el proyectil explota porque se estrella contra la pared del tablero
            // (su proxima casilla esta fuera del tablero)
            proyectil.Explotar();
            // asserts
            Assert.IsTrue(proyectil.FueDestruido());

            // limpia el tablero
            tablero.Actualizar();
        }
예제 #12
0
 public override void DaniarPorProyectil(Proyectil bomba)
 {
     this.capturado = true;
 }
예제 #13
0
 public abstract void DaniarPorProyectil(Proyectil proyectil);