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) { }
public abstract override void DaniarPorProyectil(Proyectil bomba);
public override void DaniarPorProyectil(Proyectil proyectil) { }
public override void DaniarPorProyectil(Proyectil bomba) { this.durabilidad = this.durabilidad - bomba.GetDanio(); }
public override void DaniarPorProyectil(Proyectil proyectil) { this.exploto = true; this.lanzador.NotificarExplosion(true); }
public override void DaniarPorProyectil(Proyectil bomba) { this.resistencia = this.resistencia - bomba.GetDanio(); }
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(); }
public override void DaniarPorProyectil(Proyectil bomba) { this.capturado = true; }
public abstract void DaniarPorProyectil(Proyectil proyectil);