12일차 데일리 과제

IIRU·2026년 6월 1일

클래스를 하나 선정해서 만들어봅시다. (선정하기 어렵다면 Monster로 만들어보세요)

  1. 적합한 속성과 기능을 추가
    ex) hp, Attack(), Hit(), …
  2. 클래스에 static 맴버변수를 하나 추가해봅시다.
    ex) maxHp, …
  3. 해당 클래스를 상속받는 자식 클래스를 만들봅시다.
    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();
    }


}
profile
초보 개발자 블로그입니다!

0개의 댓글