2023. 10. 20. 16:51ㆍGame Develop/C# Console Text RPG
저번 시간에는 몬스터와 플레이어가 서로 공격하는 전투 시스템까지 구현했었다. 하지만, 몬스터의 공격 방식은 스킬이 없으니 그렇다고 쳐도, 플레이어는 챕터를 거듭할수록 사용할 스킬들이 생기고 스킬들마다 효과가 다르기 때문에 저번에 만들었던 시스템가지고는 한계가있다.
따라서 오늘은 C#의 대리자를 사용하여 플레이어의 공격을 관장하는 시스템을 구축하려고 한다.

먼저 Vampire 클래스에 멤버 변수로 각각 Vampire가 취할 액션 메서드인 VampireAction 대리자와, 스킬 이름에 맞는 VampireAction을 실행해줄 Dictionary 형태의 actionDic을 추가해주었다.

그런 다음 AddAction 메서드를 통해 actionDic에 stateName(스킬명)이 있으면 action이라는 value를 StateName이라는 key를 가진 actionDic에 교체해주고 그렇지 않으면 actionDic에 key와 value값을 추가해준다.

위의 코드는 actionDic의 stateName 키의 value를 action에 넣어주어 action이 아니면 대리자로 하여금 그 액션을 실행하도록 작성해주었다. 따라서 Attack 메서드에 변화를 주어서 단순히 공격하는 것이 아닌 플레이어가 사용할 스킬의 이름을 받아와서 그것이 사전의 key 값과 일치하는지를 확인하여 스킬에 맞는 행동을 할 수 있도록 해줄 것이다.
다음은 바꿔준 Attack 메서드이다.


Getskill로 string값을 읽어와서 Attack 메서드 실행해주면 actionDic에서 해당 key 값의 value 값인 메서드를 실행한다.
이제 Bat_Fire 메서드와 Bat_Fire의 행동(효과)를 나타내주는 General 메서드만 작성해준다면 제 기능을 할 것이다.


Bat_Fire는 일반 공격이기 때문에 아무 효과가 없어서 얼마만큼의 데미지를 주었는지만 출력되게 작성하였다. 이제 실행해보자

정상적으로 출력이 잘 되는 것을 확인할 수 있다.
다음 시간은 전투가 종료되면 캐릭터의 능력치를 향상시켜주는 이벤트와 몬스터 처치 텍스트가 출력되도록 코드 작성을 해보겠다.
'Game Develop > C# Console Text RPG' 카테고리의 다른 글
C# 콘솔창으로 게임 만들기(Day 7) (0) | 2023.10.20 |
---|---|
C# 콘솔창으로 게임 만들기(Day 6) (1) | 2023.10.20 |
C# 콘솔창으로 게임 만들기(Day 4) (0) | 2023.10.20 |
C# 콘솔창으로 게임 만들기(Day 3) (0) | 2023.10.20 |
C# 콘솔창으로 게임 만들기(Day 2) (1) | 2023.10.20 |