コード例 #1
0
        static void Main(string[] args)
        {
            Arma shotgun = new Arma("Shotgun",25,5,80);
            shotgun.condicion( (x,y) => x.Nombre == "hola" );

            Arma uzi942 = new Arma("Uzi-942", 23, 54, 50);
            uzi942.condicion((x, y) => y.Nombre == "WR44");

            Arma chuck = new Arma("Chuck Norris", 3000000, 5, 1);
            chuck.condicion((x, y) => true);

            Tanque wr44 = new Tanque("WR44", 90);

            Tanque megatron = new Tanque("Megatron", 78);

            wr44.Armas.Add(shotgun);
            wr44.Armas.Add(uzi942);
            megatron.Armas.Add(chuck);
            wr44.info();
            Console.WriteLine("");
            wr44.armasContra(megatron);
            Console.WriteLine("");
            wr44.atacaA(megatron);
            wr44.info();
            Console.WriteLine("");
            megatron.info();
            //wr44.atacaA(megatron);
        }
コード例 #2
0
 public override void danio(Tanque tanque)
 {
     if (tanque.emiteCalor())
     {
         tanque.recibirAtaque(20);
     }
 }
コード例 #3
0
        public virtual void atacarTanque(Tanque tanque)
        {
            if (misiles.Count < 1)
            {
                throw new Exception("No hay misiles");
            }
            var misil = misiles.First();

            misil.danio(tanque);
            misiles.Remove(misil);
        }
コード例 #4
0
 public override void atacarTanque(Tanque tanque)
 {
     base.atacarTanque(tanque);
 }
コード例 #5
0
 public int superDanio(Tanque x, Tanque y)
 {
     int danio = this.Danio;
     if (this.Condicion(x, y)) danio += this.PlusDanio;
     return danio;
 }
コード例 #6
0
 //Métodos!!! o.O
 public void atacaA(Tanque enemigo, Tanque duenio)
 {
     enemigo.bajaTuBlindaje(this.superDanio(enemigo,duenio),duenio);
 }
コード例 #7
0
 public Arma elegiTuArma(List<Arma> unasArmas, Tanque enemigo)
 {
     List<Arma> armasDisp = this.armasDisponibles();
     if (armasDisp.Count() == 0) {
         Console.WriteLine("No hay armas disponibles!!");
         return null;
     }
     List<Arma> armasAsesinas = this.armasAsesinas(armasDisp,enemigo);
     if (armasAsesinas.Count() == 0)
     {
         Console.WriteLine("Se eligió el arma mas Danina");
         return this.armaMasDanina(armasDisp, enemigo);
     }
     else
     {
         Console.WriteLine("Se eligió el arma mas efectiva");
         return this.armaMasEfectiva(armasAsesinas, enemigo);
     }
 }
コード例 #8
0
 public abstract void danio(Tanque tanque);
コード例 #9
0
 public void atacaCon(Arma arma, Tanque enemigo)
 {
     arma.atacaA(enemigo, this);
 }
コード例 #10
0
        public void atacaA(Tanque enemigo)
        {
            if( !this.Vivo || !enemigo.Vivo )
            {
                Console.WriteLine("Alguno esta muerto. Imposible atacar");
                return;
            }

            List<Arma> armasDisp = armasDisponibles();
            Arma superArma = this.elegiTuArma(armasDisp, enemigo);
            if (superArma == null) return;
            this.atacaCon(superArma,enemigo);
            superArma.bajaTuUso();
            return;
        }
コード例 #11
0
 public void armasContra(Tanque enemigo)
 {
     Console.WriteLine("Peleando contra: " + enemigo.Nombre);
     foreach (Arma chumbo in this.Armas)
     {
         Console.WriteLine("* Arma: " + chumbo.Nombre + " -SuperDanio: " + chumbo.superDanio(enemigo,this));
     }
 }
コード例 #12
0
 public List<Arma> armasAsesinas(List<Arma> unasArmas, Tanque enemigo)
 {
     //Es un filter ¬¬ menos expresivo no podia ser el C#
     return unasArmas.Where(arma => arma.superDanio(enemigo,this) >= enemigo.Blindaje).ToList();
 }
コード例 #13
0
 public Arma armaMasEfectiva(List<Arma> unasArmas, Tanque enemigo)
 {
     //Selecciona el arma cuya diferencia entre el blindaje y el superdanio sea minima
     return unasArmas.OrderByDescending(arma => Math.Abs(enemigo.Blindaje - arma.superDanio(enemigo, this))).Last();
 }
コード例 #14
0
 public Arma armaMasDanina(List<Arma> listaArmas, Tanque enemigo)
 {
     Arma masDanina = listaArmas.OrderByDescending(arma => arma.superDanio(enemigo,this)).First();
     Console.WriteLine("Nombre: " + masDanina.Nombre);
     Console.WriteLine("Danio: " + masDanina.Danio);
     Console.WriteLine("SuperDanio: " + masDanina.superDanio(enemigo, this));
     return masDanina;
 }
コード例 #15
0
 public override void atacarTanque(Tanque tanque)
 {
     base.atacarTanque(tanque);
     blindaje--;
 }
コード例 #16
0
 public override void danio(Tanque tanque)
 {
     tanque.recibirAtaque(tanque.coraza);
 }
コード例 #17
0
 public override void danio(Tanque tanque)
 {
     tanque.recibirAtaque(cabezasNucleares * 2);
 }
コード例 #18
0
 public void bajaTuBlindaje(int danio, Tanque enemigo)
 {
     if (danio < this.Blindaje) this.Blindaje -= danio;
     else
     {
         this.Blindaje = 0;
         this.Vivo = false;
         enemigo.recibirArmas(this.Armas);
         this.Armas = new List<Arma>();
     }
 }