eunyeong-so / Learn-Anything

0 stars 0 forks source link

Interface design - Player and Monster #6

Open eunyeong-so opened 3 years ago

eunyeong-so commented 3 years ago

플레이어와 몬스터의 공통요소

플레이어와 몬스터는 기본 능력치로 (HP, ATK)를 가진다. 서로에게 Damage를(Attack, SpecialAttack) 두 종류로 입힐 수 있다.

//Stat Health Point Striking Power(ATK)

//Damage Attack Special Attack

 

Interface Design

IDamageable void Damage(int strikingPower, DamageType damageType);

IStat int HealthPoint { get; set; } int StrikingPower { get; set; }

 

Enum

public enum DamageType {attack, speicalAttack}

 

구현 예시

 public void Damage (int strikingPower, DamageType damageType)
    {
            switch (damageType)
            {
                    case DamageType.Attack:
                        HealthPoint -= strikingPower;
                        break;
                    case DamageType.SpeicalAttack:
                        HealthPoint -= strikingPower * 2;
                        break;
            }
    } 

플레이어가 보스에게 스페셜 어택 할 때 
bossMonster.Damage (player.StrikingPower, DamageType.SpeicalAttack);

참고사항

Player의 Attack은 Hit(마우스클릭) 마다 실행될 것이고 Monster의 Attack, Special Attack은 라운드에 정해진 특정 초마다 자동 실행시키려 합니다!

인터페이스 단계부터 설계하는건 처음이라 많이 어색한 것 같습니다. 처음에는 다양한 인터페이스를 설계했었는데, 너무 오버된 느낌이들었습니다. 최대한 많은 공통점을 찾아내야할지, 최소한의 공통점을 추려서 설계해주는 것인지 하하😂

jongfeel commented 3 years ago

저번 모각코때 말씀 드렸는데, 참견형 방법으로 진행해 보려고 합니다.

은영님의 디자인과 일부 설계 내용을 바탕으로 저도 같은 걸 만들어 보면서 서로 리뷰가 가능하도록 해보는 게 목표입니다.

곧 시작을 해볼 예정이에요.


설계하신 부분은 일단 생각하신 대로 진행해 보시면 좋을 것 같습니다. 플레이어와 몬스터의 공통요소를 뽑아내고 그걸 interface까지 생각하신 거면 곧 테스트 코드와 구현 코드를 작성해 봐도 될 거 같다는 생각입니다.