コード例 #1
0
        /// <summary>
        /// Ejecuta un ataque hacia un villano.
        /// Aquí entran en juego los puntos de salud del villano, el ataque del héroe y los puntos de
        /// defensa del villano. Estos últimos pueden ser nada o muy efectivos, se genera un número random
        /// desde 0 hasta el valor de la defensa del villano, el número resultante se le resta al ataque del héroe
        /// y el valor resultante se le resta a los puntos de salud del villano.
        /// </summary>
        /// <param name="villain">El <see cref="AbstractVillain"/> a atacar.</param>
        /// <exception cref="CannotAttackDeadException">Arrojada cuando cualquiera de los dos personajes se encuentra sin vida.</exception>
        public void Attack(AbstractVillain villain)
        {
            if (!this.IsAlive() || !villain.IsAlive())
            {
                throw new CannotAttackDeadException("Uno de los dos caracteres que iba a ser atacado estaba muerto.");
            }
            villain.Hp = Math.Max(0, villain.Hp - Math.Max(0, this.Damage - new Random().Next(villain.Defense)));

            if (!villain.IsAlive())
            {
                TorreDeLosCaidos.Instance.Notify(this, villain);
            }
        }
コード例 #2
0
 /// <summary>
 /// Constructor utilizado para crear batallas entre bandos de 1 personaje.
 /// Se aplica el patrón creator ya que en este constructor se crean las nuevas
 /// listas que contienen a cada uno de los personajes.
 /// </summary>
 /// <param name="hero"></param>
 /// <param name="villain"></param>
 public BattleEncounter(AbstractHero hero, AbstractVillain villain)
     : this(new List <AbstractHero>() { hero }, new List <AbstractVillain>() { villain })
 {
 }