과제

Day15 - 오버로딩 1,2,3단계

qltjfeo55555 2024. 12. 10. 15:32

과제 1) Hero 클래스 생성

새로운 cs 파일을 만들고, Hero 클래스 생성

  • 필드 혹은 프로퍼티
    • 문자열 영웅의 이름
    • 정수형 영웅의 체력
    • 정수형 영웅의 공격력
    • 정수형 영웅의 방어력
  • 생성자
    • 기본 생성자: "Unknown Hero"로 영웅 이름을 설정하고, HP는 100, 공격력은 20, 방어력은 10으로 설정
    • 오버로딩 생성자: 이름, 체력, 공격력, 방어력을 모두 외부에서 세팅해 줄 수 있는 생성자도 하나 생성
  • 메서드
    • 피격을 나타내는 메서드 TakeDamage
      • 반환은 없음. 인자값은 정수형 damage
      • 받은 피해를 체력에서 차감, 방어력은 피해를 경감시키는 역할
      • 예를 들어, 인자로 넘어온 데미지는 40, 방어력은 10이면 총 30 데미지 받음
    • 몬스터 공격하는 메서드 AttackMob
      • 반환 없음. 인자값은 아래 만들 Monster형 mob
      • cw 로 “몹 이름을 공격!” 출력
      • mob의 TakeDamage 메서드 호출하되, 인자로 hero의 공격력 넘김
    • 영웅의 상태를 출력하는 함수 DisplayInfo
      • cw로 영웅 속 다양한 요소들을 본인 취향에 맞게 자유롭게 출력하는 기능
internal class Hero
{
    public string HeroName;
    public int HeroHP;
    public int HeroPower;
    public int HeroDefensive;
    
    //먼저 값을 대입하면서 기본값 생성 
    public Hero(string Name = "Unknown Hero", int HP = 100, int Power = 20, int Defensive = 10)
    {
        HeroName = Name;
        HeroHP = HP;
        HeroPower = Power;
        HeroDefensive = Defensive;

    }
    public Hero()
    {
        HeroName = "Unknown Hero";
        HeroHP = 100;
        HeroPower = 20;
        HeroDefensive = 10;

    }

    public void TakeDamage(int monsterdamage)
    {
        HeroHP = HeroHP + HeroDefensive - monsterdamage;
    }

    public void AttackMob(Monster mob)
    {
        Console.WriteLine($"{mob.MonsterName} 공격");
        TakeDamage(mob.MonsterPower);

    }

    public void DisplayInfo()
    {
        Console.WriteLine("영웅의 이름 : " + HeroName);
        Console.WriteLine("영웅의 체력 : " + HeroHP);
        Console.WriteLine("영웅의 공격력 : " + HeroPower);
        Console.WriteLine("영웅의 방어력 : " + HeroDefensive);


    }




    }

과제 2) Monster 클래스 생성

새로운 cs 파일을 만들고, Monster 클래스를 생성

  • 필드 혹은 프로퍼티
    • 문자열 몹 이름
    • 정수형 몹 체력
    • 정수형 몹 공격력
    • 정수형 몹 방어력
    • 정수형 몹 레벨
  • 생성자
    • 기본 생성자: “Basic Monster"로 몬스터 이름을 설정하고, HP는 50, 공격력은 15, 방어력은 5, 레벨은 1로 설정
    • 오버로딩 생성자: 이름, 체력, 공격력, 방어력, 레벨을 외부에서 세팅해 줄 수 있는 생성자도 하나 생성
  • 메서드
    • TakeDamage
      • 반환은 없음
      • 받은 피해를 체력에서 차감, 방어력은 피해를 경감시키는 역할
      • 예를 들어, 인자로 넘어온 데미지가 40이고 방어력이 5이면 35 뎀지 입음
    • AttackHero
      • 반환은 없음
      • 인자값으로 영웅 객체 hero 를 받아 몬스터가 영웅을 공격하도록 구현
      • hero 속 메서드 TakeDamage를 호출, 인자값으로 몹 공격력 넘겨줌
    • DisplayInfo
      • 몬스터의 상태를 출력하는 함수
      • 몬스터의 이름, 체력, 공격력, 방어력, 레벨을 출력
internal class Monster
{
    public string MonsterName;
    public int MonsterHp;
    public int MonsterPower;
    public int MonsterDefensive;
    public int MonsterLevel;

    public Monster(string name = "Basic Monster", int hp = 50, int power = 15, int defensive = 5, int level = 1)
    {
        MonsterName = name;
        MonsterHp = hp;
        MonsterPower = power;
        MonsterDefensive = defensive;
        MonsterLevel = level;
    }

    public Monster()
    {
        MonsterName = "Basic Monster";
        MonsterHp = 50;
        MonsterPower = 15;
        MonsterDefensive = 5;
        MonsterLevel = 1;

    }

    public void TakeDamage(int herodamage)
    {
        MonsterHp = MonsterHp + MonsterDefensive - herodamage;
    }

    public void AttackHero(Hero hero)
    {
        TakeDamage(hero.HeroPower);

    }
    public void DisplayInfo()
    {
        Console.WriteLine("몬스터의 이름 : " + MonsterName);
        Console.WriteLine("몬스터의 체력 : " + MonsterHp);
        Console.WriteLine("몬스터의 공격력 : " + MonsterPower);
        Console.WriteLine("몬스터의 방어력 : " + MonsterDefensive);
        Console.WriteLine("몬스터의 레벨 : " + MonsterLevel);
    }
}

과제 3) 게임 테스트

  • 메인으로 이동해서 다음을 작성 후 테스트
  • Hero 객체와 Monster 객체를 각각 하나씩 생성.
    • Hero는 기본 생성자로 호출해보고 Monster는 오버로딩된 생성자 호출하고 값은 적당히 체력 40, 공격력 14, 방어력 4, 레벨3 정도 세팅
  • Hero 객체는 AttackMob() 메서드를 사용하여 Monster 객체를 공격
  • Monster 객체는 AttackHero() 메서드를 사용하여 Hero 객체를 공격
  • 각각의 공격 후 HeroMonster 객체의 상태를 출력하는 DisplayInfo 를 활용해서 현재 상태 확인하기

 

static void Main(string[] args)
{
    //hero 기본값 할당
    //Hero hero = new Hero();
    //monster 입력값 할당
    //Monster monster = new Monster("유니콘", 40, 14, 4, 3);

    //hero.AttackMob(monster);


    //monster.AttackHero(hero);

    //hero, monster 상태 출력
    //hero.DisplayInfo();
    //monster.DisplayInfo();
}

https://record5555.tistory.com/22

 

Day15 - 오버로딩 심화

https://record5555.tistory.com/21 Day15 - 오버로딩 1,2,3단계과제 1) Hero 클래스 생성새로운 cs 파일을 만들고, Hero 클래스 생성필드 혹은 프로퍼티문자열 영웅의 이름정수형 영웅의 체력정수형 영웅의 공

record5555.tistory.com