public LopezR(Casillero posicion)
     : base(posicion)
 {
     this.resistencia = 10;
     this.bomba = new Proyectil();
     bomba.Duenio = this;
 }
        public void PruebaLaCreacionDeUnCasillero()
        {
            Casillero casillero = new Casillero(1, 5);

            Assert.AreEqual(casillero.Fila, 1);
            Assert.AreEqual(casillero.Columna, 5);
        }
 public Molotov(Casillero posicion)
     : base(posicion)
 {
     this.destruccion = 5;
     this.retardo = 1;
     this.rango = 3;
 }
        public void PruebaPosicionarUnaBombaEnLaCasilla()
        {
            Casillero casillero = new Casillero(0, 0);

            Molotov bomba = new Molotov();

            casillero.Entidad = bomba;

            Assert.IsNotNull(casillero.Entidad);
        }
 // Para el movimiento, verifica si el movimiento es legal y cambia las referencias
 public void CambiarPosicionA(Casillero casilleroNuevo)
 {
     if (!PuedeMoverseA(casilleroNuevo))
     {
         throw new MovimientoInvalidoException();
     }
     posicion.Entidad = null;
     casilleroNuevo.Entidad = this;
     posicion = casilleroNuevo;
     if (this.EsBombita()) this.tablero.PosicionBombita = casilleroNuevo;
 }
 private bool movimientoEsInvalido(Casillero casilleroADesplazarse)
 {
     if (!casilleroADesplazarse.EstaVacio() && !casilleroADesplazarse.Entidad.EsArticulo()) return true;
     if (casilleroADesplazarse.Entidad != null && casilleroADesplazarse.Entidad.EsSalida() && tablero.CantidadEnemigosVivos() != 0) return true;
     return false;
 }
 public Enemigo(Casillero posicion)
     : base(posicion)
 {
 }
 private void AgregarExplosion(Casillero posicion)
 {
     Explosion explosion = new Explosion(this);
     explosion.Posicion = posicion;
     this.listaExplosiones.Add(explosion);
 }
 //Metodos para agregar entidad en el tablero
 public void AgregarEntidadEnCasillero(Entidad entidad, int x, int y)
 {
     try
     {
         Casillero casillero = ObtenerCasillero(x, y);
         casillero.Entidad = entidad;
         entidad.Posicion = casillero;
         entidad.Tablero = this;
         if (entidad.EsBombita()) posicionBombita = casillero;
     }
     catch (CasilleroFueraDeRangoException e)
     {
         throw e;
     }
 }
        public void PruebaQueCuandoSeCreaUnCasilleroEsteVacio()
        {
            Casillero casillero = new Casillero(1, 5);

            Assert.IsTrue(casillero.EstaVacio());
        }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnTimerAdentroCuandoLePasoLaPosicionDesdeTimer()
        {
            Casillero casillero = new Casillero(5, 4);
            Timer timer = new Timer(casillero);

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, timer.Posicion.Fila);
            Assert.AreEqual(4, timer.Posicion.Columna);
        }
        public void PruebaPosicionarUnObstaculoEnLaCasilla()
        {
            Casillero casillero = new Casillero(0, 0);

            Obstaculo bloque = new BloqueDeAcero();

            casillero.Entidad = bloque;

            Assert.IsNotNull(casillero.Entidad);
        }
        public void PruebaPosicionarUnBloqueEnLaCasillaYQueTienePersonajeDevuelvaFalse()
        {
            Casillero casillero = new Casillero(0, 0);

            BloqueDeAcero bloque = new BloqueDeAcero();

            casillero.Entidad = bloque;

            Assert.IsFalse(casillero.TienePersonaje());
        }
 public Personaje(Casillero posicion)
     : base(posicion)
 {
     posicion.Entidad = this;
     this.posicion = posicion;
 }
 // Define si el movimiento es legal o no.
 public virtual bool PuedeMoverseA(Casillero casilleroNuevo)
 {
     if (casilleroNuevo.EstaVacio()) return true;
     return false;
 }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnCecilioAdentroCuandoSeLoPasoEnUnSetter()
        {
            Casillero casillero = new Casillero(5, 6);
            Cecilio cecilio = new Cecilio();
            casillero.Entidad = cecilio;

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, cecilio.Posicion.Fila);
            Assert.AreEqual(6, cecilio.Posicion.Columna);
        }
        public void PruebaPosicionarUnPersonajeEnLaCasilla()
        {
            Casillero casillero = new Casillero(0, 0);

            Personaje personaje = new Bombita();

            casillero.Entidad = personaje;

            Assert.IsNotNull(casillero.Entidad);
        }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnTimerAdentroCuandoSeLoPasoEnUnSetter()
        {
            Casillero casillero = new Casillero(5, 6);
            Timer timer = new Timer();
            casillero.Entidad = timer;

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, timer.Posicion.Fila);
            Assert.AreEqual(6, timer.Posicion.Columna);
        }
        public void PruebaPosicionarUnPersonajeEnLaCasillaYQueTienePersonajeDevuelvaTrue()
        {
            Casillero casillero = new Casillero(0, 0);

            Bombita personaje = new Bombita();

            casillero.Entidad = personaje;

            Assert.IsTrue(casillero.TienePersonaje());
        }
        public void PruebaQueElCasilleroEsteVacioDevuelvaTrueCuandoEsteVacio()
        {
            Casillero casillero = new Casillero(5, 5);

            Assert.IsTrue(casillero.EstaVacio());
        }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnaMolotovAdentroCuandoLePasoLaPosicionDesdeMOLOTOV()
        {
            Casillero casillero = new Casillero(5, 4);
            Bomba bomba = new Molotov(casillero);

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, bomba.Posicion.Fila);
            Assert.AreEqual(4, bomba.Posicion.Columna);
        }
        public void PruebaPosicionarUnArticuloEnLaCasilla()
        {
            Casillero casillero = new Casillero(0, 0);

            Articulo articulo = new Habano();

            casillero.Entidad = articulo;

            Assert.IsNotNull(casillero.Entidad);
        }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnaMolotovAdentroCuandoSeLoPasoEnUnSetter()
        {
            Casillero casillero = new Casillero(5, 6);
            Bomba bomba = new Molotov();
            casillero.Entidad = bomba;

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, bomba.Posicion.Fila);
            Assert.AreEqual(6, bomba.Posicion.Columna);
        }
        //Metodo que inicializa los casilleros del tablero
        public void InicializarCasilleros(bool ConObstaculos)
        {
            for (int i = 0; i < MAXIMO_FILA; i++)
            {
                for (int j = 0; j < MAXIMO_COLUMNA; j++)
                {
                    tablero[i, j] = new Casillero(i, j);

                    if (ConObstaculos) CargarBloqueDeAcero(i, j);
                }
            }
        }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnBloqueDeAceroAdentroCuandoLePasoLaPosicionDesdeElBloque()
        {
            Casillero casillero = new Casillero(5, 4);
            Obstaculo bloque = new BloqueDeAcero(casillero);

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, bloque.Posicion.Fila);
            Assert.AreEqual(4, bloque.Posicion.Columna);
        }
 public Bomba(Casillero posicion)
     : base(posicion)
 {
     posicion.Entidad = this;
 }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnBloqueDeAceroAdentroCuandoSeLoPasoEnUnSetter()
        {
            Casillero casillero = new Casillero(5, 6);
            Obstaculo bloque = new BloqueDeAcero();
            casillero.Entidad = bloque;

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, bloque.Posicion.Fila);
            Assert.AreEqual(6, bloque.Posicion.Columna);
        }
 public Cecilio(Casillero posicion)
     :base(posicion)
 {
     this.resistencia = 5;
     this.bomba = new Molotov();
 }
        public void PruebaQueCasilleroEstaVacioDevuelvaFalseCuandoTieneUnCecilioAdentroCuandoLePasoLaPosicionDesdeCecilio()
        {
            Casillero casillero = new Casillero(5, 4);
            Cecilio cecilio = new Cecilio(casillero);

            Assert.IsFalse(casillero.EstaVacio());
            Assert.AreEqual(5, cecilio.Posicion.Fila);
            Assert.AreEqual(4, cecilio.Posicion.Columna);
        }