//Método básico que permite al Caballero atacar a otro. public virtual Caballero Ataque(Caballero caballeroIn) { int damage = this.equipoDeCombate.podArma + this.fuerza + this.cosmos; int effDamage = damage - caballeroIn.equipoDeCombate.defArmadura; caballeroIn.vida -= effDamage; caballeroIn.equipoDeCombate.UpdateArmadura(effDamage); this.equipoDeCombate.UpdateArma(effDamage); Console.Write(this.nombre + " ha atacado con su Ataque " + this.tipo + " a " + caballeroIn.nombre + ".\n" + "Daño inicial: " + damage + "\n" + "Daño efectivo: " + effDamage); return caballeroIn; }
public override bool Vencido(CaballeroDorado doradoIn, Caballero caballeroIn, int numCasaIn) { if (base.vida <= 0) { base.vida = 0; int auxInt = GA.Next(0, 2); if (auxInt == 0) { base.vida = base.originalVida; base.equipoDeCombate.durArma = base.equipoDeCombate.originalDurArma; base.equipoDeCombate.podArma = base.equipoDeCombate.originalPodArma; base.equipoDeCombate.durArmadura = base.equipoDeCombate.originalDurArmadura; base.equipoDeCombate.defArmadura = base.equipoDeCombate.originalDefArmadura; Console.Write(base.nombre + " ha sido vencido, pero resucitó."); Herramientas.ControlDeFlujo(); return false; } Console.Write(base.nombre + " ha sido vencido, y no pudo resucitar."); Herramientas.ControlDeFlujo(); return true; } return false; }
public virtual Caballero Actuar(Caballero caballeroIn) { return caballeroIn; }
//Método derivado que permite modificar el mensaje mostrado en consola cuando el Caballero de Oro es vencido. public override Boolean Vencido(CaballeroDorado doradoIn, Caballero caballeroIn, int numCasaIn) { if (base.vida <= 0) { base.vida = 0; Herramientas.updateTitle(doradoIn, caballeroIn, numCasaIn); Console.Write(this.nombre + " ha sido vencido. Los Caballeros de Bronce se dirigen a la siguiente Casa."); Herramientas.ControlDeFlujo(); return true; } return false; }
//El Caballero Dorado tiene tres opciones: Ataca, Incrementa su Cosmos, o se abstiene debido a su Conciencia. public override Caballero Actuar(Caballero caballeroIn) { int auxInt1 = GA.Next(0, 100 + 1); int auxInt2 = 100 - this.conciencia; if (auxInt1 <= auxInt2) { auxInt1 = GA.Next(0, 2 + 1); if (auxInt1 == 0 || auxInt1 == 1) caballeroIn = base.Ataque(caballeroIn); else base.IncrementarCosmos(); idleTurns = 0; } else { Console.Write(base.nombre + " no ha actuado debido a su conciencia."); idleTurns++; } Herramientas.ControlDeFlujo(); return caballeroIn; }
//TRUE si el Caballero ha sido vencido. public virtual Boolean Vencido(CaballeroDorado doradoIn, Caballero caballeroIn, int numCasaIn) { if (this.vida <= 0) { this.vida = 0; return true; } return false; }
//Actualiza los datos de los contrincantes en consola. public static void updateTitle(CaballeroDorado doradoIn, Caballero electoIn, int numCasaIn) { Console.Clear(); Console.WriteLine( "Casa: " + numCasaIn + "\n\n" + "Caballero Dorado: " + doradoIn.nombre + " de " + doradoIn.constelacion + ", Caballero " + doradoIn.tipo + "\n" + " Vida: " + doradoIn.vida + "/" + doradoIn.originalVida + "\n" + " Cosmos: " + doradoIn.cosmos + "\n" + " Conciencia: " + doradoIn.conciencia + "\n" + " Turnos Sin Atacar: " + doradoIn.idleTurns + "\n\n" + "Caballero Contrincante: " + electoIn.nombre + " de " + electoIn.constelacion + ", Caballero " + electoIn.tipo + "\n" + " Vida: " + electoIn.vida + "/" + electoIn.originalVida + "\n" + " Cosmos: " + electoIn.cosmos + "\n" + " Amor Por Zahorí: " + electoIn.amor + "\n\n"); }
//Elige a un Caballero De Bronce que esté vivo aleatoriamente para reemplazar a otro vencido. public static CaballeroBronce ReplaceCaballero(Caballero caballeroIn, List<CaballeroBronce> broncesIn) { Random GA = new Random(); string nombreAntiguo = caballeroIn.nombre; int auxInt = GA.Next(0, 4 + 1); while (broncesIn[auxInt].vida <= 0) auxInt = GA.Next(0, 4 + 1); string nombreNuevo = broncesIn[auxInt].nombre; Console.Write(caballeroIn.nombre + " ha sido vencido. \n\n" + nombreNuevo + " reemplazará al caído " + nombreAntiguo + "."); Herramientas.ControlDeFlujo(); return broncesIn[auxInt]; }