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

2023. 10. 20. 15:29Game Develop/C# Console Text RPG

C#의 콘솔창에서 텍스트 알피지를 만들어 보려고 한다.

 
게임명
If The NIght Comes
장르
텍스트 알피지
진행 방식
3개의 챕터(챕터는 총 10 stage로 구성), 스토리는 각 챕터의 1,5,10 stage에 나올 예정, 챕터의 마지막(10 stage)은 보스전, 나머지 stage는 일반 몬스터와의 대결
캐릭터
뱀파이어(시작은 뱀파이어로 하고 여유가 된다면 늘려갈 예정)
스토리
늑대인간과 인간의 공격으로 멸족 위기에 처한 뱀파이어였지만, 강력한 뱀파이어가 태어나 일족을 지킨다는 이야기
스킬
4~5개 구현 예정
 

표를 통해 간략하게 게임의 방향성에 대해 스케치 해보았다.

 

이제 게임의 가장 기본이 될 클래스(게임, 플레이어, 몬스터)와 게임 프로세스를 작성해보도록 하겠다.

 

 

여러 스크립트가 같이 있으면 혼란스러울 수 있어서 크게 클래스를 만들 게임 몬스터 플레이어 폴더를 생성해주었다.

 

이제 게임 폴더에 기본적인 게임 클래스를 작성해보겠다.

챕터의 구분을 위해 enum을 사용하여 시작화면, 1 2 3 챕터, 게임 종료를 위한 ending까지 5개의 enum을 만들어주었다.

 

오늘은 간단하게 main에서 실행될 유일한 Game 클래스의 메서드 Process()와 End()만 간단하게 작성하겠다.

 

Lobby()는 작동확인을 위해 임시로 저렇게 구현해 놓았다.

게임 클래스를 사용하기 위해 Game폴더에 접근해서 Game 클래스를 사용해주었다.

원하는 결과가 나왔다. 이제 Main 클래스는 게임이 완성될때까지 더이상 만지지 않을것이다. 모든 게임 프로세스는 프로세스 메서드에서 처리될 것이다.

 

이제 Player와 Monster 클래스를 각각 작성하고 오늘 포스팅은 마무리 짓도록 하겠다.

 

Player 클래스

캐릭터 선택을 위해 enum 으로 캐릭터 구분을 해주었다.

각 캐릭터들은 Player클래스를 상속받을 것이기 때문에 변수는 protected로 선언해주었다. 또한, 기본적인 스탯이 다를 것이기 때문에 SetInfo()를 만들어 주고 maxHP, currentHP, dmg 변수의 값을 사용할 수 있도록 Get-() 도 만들어주었다.

 

 

잘 생성되는지 확인을 위해 한가지 메서드를 추가하고 로비에 Player 객체를 생성해보자.

상태를 보여줄 ShowStatus 메서드를 만들어 주고

객체 생성시 생성 문구와 ShowStatus() 실행

확인을 위해 protected로 선언됐던 Player 클래스를 잠시 public으로 바꾸어 주었다. 이후 Player 객체가 생성된 것을 확인할 수 있었다.

 

Monster 클래스

일반 몬스터와 보스 몬스터는 전투 방식에서 차이가 있을 것이기 때문에 구분을 위해 enum과 Monster 생성자를 따로 구현했다.

아직까지는 선언된 변수나 메서드가 Player와 큰 차이는 없다.

 

이제 일반 몬스터와 보스 몬스터가 잘 선언됐는지 확인을 위해 로비로 돌아가보자.

일반 몬스터와 보스 몬스터를 구분하기 위해 enum을 잠시 NONE에서 각각 MONSTER와 BOSS로 수정했고 Player와 똑같이 작성하여 실행하였더니 일반 몬스터와 보스 몬스터 둘 다 잘 생성되었음을 확인할 수 있었다.

 

이를 끝으로 오늘 포스팅은 마치고 다음에는 로비 화면과, 캐릭터(뱀파이어) 클래스, 챕터 1에 등장할 몬스터 클래스를 작성해보도록 하겠다.