
Interface iAction
{
void Draw(); //простой метод вывода имени монстра
int Attack(int a); //реализация атаки с заданной силой
void Die(); // метод вывода на экран сообщения о смерти монстра
int Power { get; } //свойство, вычисляющее силу монстра
}
class Monster : IAction
{
public Monster()
{
this.health = 100;
this.ammo = 100;
this.name = "Noname";
}
public Monster(string name)
: this()
{
this.name = name;
}
public Monster(int health, int ammo, string name)
{
this.health = health;
this.ammo = ammo;
this.name = name;
}
public int Health
{
get
{
return health;
}
set
{
if (value > 0) health = value;
else health = 0;
}
}
public int Ammo
{
get
{
return ammo;
}
set
{
if (value > 0) ammo = value;
else ammo = 0;
}
}
public string Name
{
get
{
return name;
}
}
public void Passport()
{
Console.WriteLine("Monster {0} \t health ={1} ammo={2}", name, health, ammo);
}
//ДАЛЕЕ РЕАЛИЗУЮТСЯ ВСЕ МЕТОДЫ ИНТЕРФЕЙСА
public void Draw()
{ Console.WriteLine("Здесь был монстр " + name); }
public int Attack(int a)
{
ammo -= a;
if (ammo > 0) Console.WriteLine("ба-бах!");
else ammo = 0;
return ammo;
}
public void Die()
{ Console.WriteLine("Монстр " + name + "умер"); health = 0; }
public int Power
{
get { return ammo * health; }
}
string name;
int health, ammo;
}
class Program
{
static void Main(string[] args)
{
Monster Вася = new Monster(50, 50, "Вася как класс ");
Вася.Draw();
IAction IВася = new Monster(10, 10, "Вася как интерфейс ");
IВася.Draw();
Вася.Passport();
((Monster)IВася).Passport();
IВася.Attack(10);
Вася.Attack(20);
Console.WriteLine("У монстра "+ Вася.Name+ "сила равна "+Convert.ToString (((IAction)Вася).Power));
Console.WriteLine("У монстра " + ((Monster)IВася).Name + "сила равна " + Convert.ToString(IВася.Power));
if (Вася.Ammo <= 0) Вася.Die();
if (((Monster)IВася).Ammo <= 0) IВася.Die();
Console.ReadLine();
}
}
}