C# 콘솔창으로 게임 만들기(Day 6)

2023. 10. 20. 16:56Game Develop/C# Console Text RPG

기본적인 전투 시스템은 다 갖추었으니 이제 전투가 끝났을 때 일어날 시퀀스만 작성해주면 게임의 전반적인 부분은 거의다 마무리된다.

전투의 끝의 기준부터 정해야 하는데, 플레이어가 죽었을 때랑 적이 죽었을 때로 해줄 것이다.

 

먼저 적이 죽으면 전투가 종료되고 적 처치 텍스트가 등장한 후 캐릭터의 능력치를 강화(체력 회복, 공격력 증가, 최대체력 증가)하고 다음 스테이지로 넘어가도록 코드를 짜볼것이다.

 

Monster 클래스에 player와 MONSTER enum을 매개 변수로 가진 ShowDisappear이란 메서드에 Farmer, Hunter, Wolf 처치하면, 파일 입출력을 통해 각각의 몬스터 별로 저장해 놓은 처치 텍스트 파일을 가져와 열도록 해주었고, 처치 효과로 각각 최대 체력 1 증가, 20 체력 회복, 공격력 1 증가 효과를 받도록 해주었다. 다음은 이를 구현한 메서드 코드이다. 이 메서드들은 Player 클래스에서 작성해주었다.

 

 

Game 클래스의 Battle 메서드로 넘어와서 적이 죽었을 때 ShowDisappear 메서드를 작성하고, 출력이 잘 되는지 확인해보자

 

copyPlayer는 굳이 쓸 필요가 없어서 지워주었다.

 

소스코드를 제외한 나머지 그림을 보면 퇴장 텍스트 출력과, 능력치 갱신 반영이 잘 된 것을 확인할 수 있다.

 

몬스터가 죽었을 때의 시스템을 완성했으니, 플레이어가 사망했을 때도 구현해보자. Battle 메서드의 while문을 살펴보면 조건을 true라고 해놓았다. 이는 편의를 위해서 true를 사용하여 진행했던 것이었다. 그렇기 때문에 플레이어의 체력이 0이 되더라도 몬스터가 죽지 않는 한 게임은 계속 진행이 될 것이다. 따라서, 전투에 들어가는 전제 조건 자체가 플레이어의 체력이 0 보다 커야할 때이기 때문에 true를 player.GetCurrentHp() > 0 으로 바꿔주고, while 문을 빠져나왔을 때 플레이어의 체력이 0 이하라면, chapter를 OVER로 바꾸어서 chapter가 OVER일 때의 실행문을 실행시키면 게임을 정상적으로 종료하던지 다시 시작하게 해줄 수 있다. 코드를 봐보자

FaceMonster 메서드에서 실행된 Battle 메서드가 종료되면, 플레이어의 체력이 0 이하인지 이상인지를 물어보고 밑의 실행문들을 실행해 준다.

 

플레이어의 "몬스터"에 의한 사망 텍스트 출력 메서드

 

게임이 끝나면 유저에게 게임을 재시작할 것인지 종료할 것인지를 물어보는 텍스트 출력.

빨간 네모친 부분은 원래 ENDING이었으나 최종 보스 클리어시 사용할 enum이므로 OVER로 바꾸어줌

이렇게 바꾸어 주고 실행해서 결과를 확인해보면

 
다시 시작 눌렀을 시 (Ending 메서드의 input 값이 1일 때 실행될 실행문들 중 ConsoleClear 메서드를 주석처리 한 결과)
메인 함수가 끝나면 콘솔창에서 자동으로 출력되는 텍스트

이번을 끝으로 전투 시스템은 완성이 되었다. 이제 대망의 보스전 시스템만 잘 갖춘다면 chapter 2, 3를 만드는 데에도 큰 어려움은 없을 것이다. 다음 시간에는 chapter 1에 등장할 Priest의 스킬 시스템을 구축해보도록 하겠다.