왜.... 오셨나요?

부끄러워요

유니티개발 TIL

2주차 4~5일 TIL_C#기초_게임 만들기(TextRPG)

와피했는데 2025. 7. 11. 17:30

시작앞서

4일 동안의 C#기초 문법 공부한걸 테스트하기 위한 과제로 TextRPG 제작 과제가 있었다

콘솔창에 C#으로 구현하는 게임이라 문자열을 사용해서 보여지는 UI들을 만들려고 하니 구상하는 머리가 아파오기 시작했다

그래도 과제로 주어진 템플릿 같은 화면구성이 있어서 화면구성을 토대로 로직을 구현하기로 한다

구현 완료 깃허브 레포지토리 : https://github.com/Pass1948/TextRPG_-ver.2025-


 

게임 요구 사항

 


개인적으로 생각한 TextRPG의 요구사항은 다음과 같다

  • 행동에 대한 화면 이동(Scene)
  • 유저가 입력한 텍스트에 따라 반응
  • 케릭터의 직업
  • 케릭터의 능력치 수치
  • 아이템, 장비 등 오브젝트
  • 상점 이용 : 구매 or 판매가능
  • 장비 장착 or 해제
  • 장비에 따라 능력치 수치 변화

 

게임 화면 구상


전체적인 화면 이동 구성

 

 


게임 구현


구현화면

 

 

 


구현중 고민 사항


1) Scene 화면 구성 텍스트를 기존 StringBuilder에서 Console.WritLine과 .Write로 교체 사용

= 이유는 StringBuilder는 아스키코드 사용으로 컬러색을 아스키코드표를 보고 해야할 정도로 보기 힘듬.


2) 게임매니저와 데이터매니저로 따로 나눈이유 : 게임매니저는 게임 전반의 걸친

= 게임매니저는 게임 전반의 걸친 전체적인 기능들을 담당하고 아이템, 객체의 위치 등 게임 전반의 데이터 수치를 담당하게 설계함
현재 게임에서는 아이템 목록저장소 담당이 되었다

3) Class마다의 능력치를 데이터매니저에 안넣은 이유: 클래스 마다 고유 능력치는

= 클래스 마다 고유 능력치는 클래스 부모-자식 클래스에 구현하는게 더 보기 쉽고 찾기 쉽게 하기 위함

4) list 사용시 add말고 addrange를 사용한 이유

= add보다 코드의 간소화 되고 직관적이면서 호출스택이 add로 사용할때 보다 적어서 사용하게됨

5) 구매한 아이템을 리스트에서 삭제하지않고 인벤토리리스트에 추가만 한이유

= 상점 목록에서 구매된 아이템으로 표기되어야 하기에 삭제처리를 안함