public int ExperienceReward;
public Monster(int Health, int Damage, int Armor, int Experience, int experienceReward)
this.Experience = Experience;
this.ExperienceReward = experienceReward;
public virtual void Attack(ref Character p)
if (p.Armor > this.Damage)
p.Armor = p.Armor - this.Damage;
int leftOverMonsterDamage = this.Damage - p.Armor;
p.Health = p.Health - leftOverMonsterDamage;
public class Troll : Monster
public Troll(int Health, int Damage, int Armor, int Experience, int ExperienceReward, int bonus): base (Health, Damage, Armor, Experience, ExperienceReward)
public virtual void Defend(ref Character character)
public override void Attack(ref Character p)
int doSomethingWithBonus = Bonus;
public Character(int Health, int Damage, int Armor, int Experience)
this.Experience = Experience;
public void Attack(Monster monster)
if (monster.Armor > this.Damage)
monster.Armor = monster.Armor - this.Damage;
int leftOverMonsterDamage = this.Damage - monster.Armor;
monster.Health = monster.Health - leftOverMonsterDamage;
public static void MonsterAttack(ref Character Player, Monster Monster)
if (Player.Armor > Monster.Damage)
Player.Armor = Player.Armor - Monster.Damage;
int damagePrimit = Player.Armor - Monster.Damage;
Player.Health += damagePrimit;
public static void PlayerAttack(ref Monster Monster, Character Player)
if (Monster.Armor > Player.Damage)
Monster.Armor = Monster.Armor - Player.Damage;
int damagePrimit = Monster.Armor - Player.Damage;
Monster.Health += damagePrimit;
public static void MonsterDead(ref Character Player, Monster Monster)
Player.Experience += Monster.ExperienceReward;
public static void CharacterInitialize(ref Character Player, int Health, int Damage, int Armor)
public static void CharacterInitialize(ref Character Player, int Health, int Damage, int Armor, int Experience)
Player.Experience = Experience;
public static void MonsterInitialize(ref Monster Monster, int Health, int Damage, int Armor, int Experience, int ExperienceGained)
Monster.Experience = Experience;
Monster.ExperienceReward = ExperienceGained;
public delegate void MonsterAttackDelegate(ref Character Player, Monster Monster);
public delegate void MonsterDefendDelegate(ref Character Player, ref Troll Troll);
public static void AllMonstersAttackCharacter(ref Character Player, Monster[] monsters)
foreach (Monster monster in monsters)
monster.Attack(ref Player);
public static int getNumberOfMonsters()
public static int removeDeadMonsters(Monster[] monsters)
for(int i=0;i<monsters.Length;i++)
if (monsters[i].Health <= 0)
public static void Main(String[] args)
Character[] characters = new Character[3];
characters[0] = new Character(100, 10, 20, 1);
characters[1] = new Character(100, 10, 10, 10);
characters[2] = new Character(100, 10, 10, 10);
Monster[] monsters = new Monster[getNumberOfMonsters()];
int length = monsters.Length;
for (int i = 0; i < monsters.Length; i++)
monsters[i] = new Monster(i + 10, i + 10, i + 10, i + 2, i + 1);
int numberOfKilledMonsters=0;
for (int i = 0; i < characters.Length; i++)
Character character = characters[i];
for (int j = numberOfKilledMonsters; j < monsters.Length; j++)
if (character.Health <= 0)
characters[i]=default(Character);
character.Attack(monsters[j]);
monsters[j].Attack(ref character);
Console.WriteLine("Personajul {0} a atacat",i);
numberOfKilledMonsters = removeDeadMonsters(monsters);
Console.WriteLine("{0} monstrii omorati",numberOfKilledMonsters);