Skip to content

Instantly share code, notes, and snippets.

@smkplus
Created April 10, 2020 06:58
Show Gist options
  • Select an option

  • Save smkplus/a76f2475aa1fde6092de7e97c38674bb to your computer and use it in GitHub Desktop.

Select an option

Save smkplus/a76f2475aa1fde6092de7e97c38674bb to your computer and use it in GitHub Desktop.
public abstract class Character
{
public int Armor { get; set; }
public int Life { get; set; }
public abstract void TakeDamage(int damage);
}
public class Warrior : Character
{
public override void TakeDamage(int damage)
{
Life -= Math.Max(0, damage - Armor);
}
}
public class Mage : Character
{
public int MagicProtection { get; set; }
public override void TakeDamage(int damage)
{
Life -= Math.Max(0, damage - Armor - MagicProtection);
}
}
public class Rogue : Character
{
public int Furtivity { get; set; }
public override void TakeDamage(int damage)
{
Life -= Math.Max(0, damage - Armor - Furtivity);
}
}
public class DamageManager
{
public void CalculateDamage(Character character, int damage)
{
character?.TakeDamage(damage);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment