클래스를 하나 선정해서 만들어봅시다. (선정하기 어렵다면 Monster로 만들어보세요)
- 적합한 속성과 기능을 추가
ex) hp, Attack(), Hit(), …
- 클래스에 static 맴버변수를 하나 추가해봅시다.
ex) maxHp, …
- 해당 클래스를 상속받는 자식 클래스를 만들봅시다.
ex) slime, goblin, …
Monster.cs
using System;
namespace _260601_2
{
internal class Monster
{
protected string name ="";
public string Name { get { return name; } set { name = value; } }
protected int hp;
public int Hp { get { return hp; } set { hp = value; } }
protected int damage;
public int Damage { get { return damage; } set { damage = value; } }
public Monster(string _name, int _hp, int _damage)
{
this.name = _name;
this.hp = _hp;
this.damage = _damage;
}
public void SetHp(int _hp)
{
hp = _hp;
}
public virtual void Attack()
{
Console.WriteLine("공격");
}
public virtual void PrintStatus()
{
Console.WriteLine($"NAME : {name}");
Console.WriteLine($"HP : {hp}");
Console.WriteLine($"DAMAGE : {damage}");
}
public virtual void TakeDamage(int _damage)
{
int heal = hp -= _damage;
SetHp(heal);
}
}
}
Slime.cs
using System;
namespace _260601_2
{
internal class Slime : Monster
{
static private int maxHp;
public Slime(string _name, int _hp, int _damage,int _maxHp) : base(_name, _hp, _damage)
{
name = _name;
hp = _hp;
damage = _damage;
maxHp = _maxHp;
}
public override void Attack()
{
base.Attack();
Console.WriteLine($"슬라임의 공격 : {damage}");
}
public override void PrintStatus()
{
base.PrintStatus();
Console.WriteLine($"MaxHp :{maxHp}");
}
}
}
Goblin.cs
using System;
namespace _260601_2
{
internal class Goblin : Monster
{
static private int maxHp;
public Goblin(string _name, int _hp, int _damage, int _maxHp) : base(_name, _hp, _damage)
{
name = _name;
hp = _hp;
damage = _damage;
maxHp = _maxHp;
}
public override void Attack()
{
base.Attack();
Console.WriteLine($"고블린의 공격 : {damage}");
}
public override void PrintStatus()
{
base.PrintStatus();
Console.WriteLine($"MaxHp :{maxHp}");
}
}
}
Program.cs
using _260601_2;
using System;
class Program()
{
static void Main()
{
Slime slime = new Slime("Slime", 10, 1, 10);
slime.PrintStatus();
Console.WriteLine("------------------------------");
slime.Attack();
Console.WriteLine("------------------------------");
slime.TakeDamage(5);
Console.WriteLine("슬라임이 대미지를 받음.");
Console.WriteLine("------------------------------");
slime.PrintStatus();
Console.WriteLine("------------------------------");
Goblin goblin = new Goblin("Goblin", 20 ,2, 20);
goblin.PrintStatus();
}
}