내일배움캠프 - TIL/내일배움캠프 - TIL

내일배움캠프 - TIL/내일배움캠프 - TIL내일배움캠프 10일차

rudals4469 2025. 4. 23. 21:05

Text RPG

  • 프로젝트 명 : Text Maple RPG
  • 프로젝트 소개 :
    • Text RPG 라는 기본 틀에 우리에게 친숙한 온라인 게임인 Maple Story를 더하여 몰입감 있는 Text RPG 구현하기
    • 기본적인 객체 지향 프로그래밍 준수하여 구현하기
    • 코드 컨벤션, 깃 컨벤션 준수하여 협업하기
  • 클래스 다이어 그램

 

  • 와이어 프레임

 

 


 

오늘은 얼추 프로그램이 돌아갈 정도로 진도가 나갔다. 기본 기능 구현은 거의 90% 정도로 완료되었다.

 

대충 출력 화면을 보면서 얘기를 이어 나가 보겠습니다.

 

 

가장 먼저 MainMenu 화면입니다. 여기서 입력을 받아 원하는 기능들을 둘러볼 수 있습니다.

 

 

메인메뉴에서 2번을 누르게되면 들어오는 상점 탭입니다. 여기서 상점에 있는 모든 장비들을 출력하게 되고 1을 눌러 구매 시 아이템 목록에서 사라지게 됩니다. 현재 판매는 인벤토리 창에서 구매 비용과 똑같은 돈으로 판매가 가능합니다.

 

 

메인 메뉴에서 1번을 누르면 들어오게 되는 메뉴입니다. 캐릭터의 상태를 볼 수 있고

1번을 누를 시 자신의 인벤토리를 볼 수 있습니다.

 

 

현재는 인벤토리에 아무 것도 없는 상태입니다. 인벤토리에 아이탬이 들어오게 되면 아이탬 들의 정보를 출력하게 됩니다. 

또한 장착 관리에 들어가서 장착/해제 기능 까지 구현이 되어 있는 상태입니다.

만약 무기/방어구/방패를 장착하게 된다면 상태 보기 창에서 각 각에 맞는 장착중인 아이템 또한 출력이 됩니다.

 

 

다음의 코드는 장착 관리 시스템입니다. 418줄부터 설명을 드리면 먼저 출력 함수로 들어가게 됩니다. 출력 함수는 

 

다음과 같이 아이템이 있는 지 없는 지를 나누어 아이탬이 있다면

 

 

무기, 방어구, 방패, 포션을 각 각 나누어 Player의 inventory를 전부 순회하여 출력을 하는 식으로 구현이 되어있습니다.

 

이렇게 출력을 하고 나서 사용자의 입력을 받고 그 입력에 맞추어 조건문에 들어가게 되는데 

Player.IsEquiped() 함수에 사용자의 입력 -1를 주어 리스트의 인덱스와 사용자의 인덱스를 정렬 해준 뒤

 

 

Eqiped() 함수에 들어와서 타입을 먼저 검사하고, 무기가 끼워져 있는 상태면 무기를 일단 제거 하고

입력 받은 인덱스의 무기를 끼우는 식으로 구현이 되어있습니다.

그리곤 0을 입력 받으면 이전 메뉴로 돌아가고 그 외의 입력을 받으면 오류 구문을 출력하는 함수를 호출합니다.

 

게임의 기본 토대를 이런식으로 출력함수 - 입력 - 로직 - 출력함수의 구조를 띄고 있습니다.


회고

오늘은 기본 기능 구현은 거의 마무리되어 실행이 될 수 있도록 코드를 합쳐보았고 그로 인해 오류도 꽤 많았다.

사실 코드를 구현하는 파트도 어려웠지만 월, 화요일에 프로젝트 컨셉을 맞고 클래스 다이어그램, 와이어프레임을 제작 하는게

생각보다 많은 시간을 요구하였다.

또한 팀장으로써 팀원들에게 적절하게 파트를 분배해줘야 되는데 이것이 가장 큰 어려움이었다. 어떤 팀원분은 후딱 끝내고

어떤 팀원분은 오래 걸리시다 보니 파트의 분배에 아쉬움이 많이 남았던 것 같다.

앞으로 이런 일이 또 얼마나 있을진 모르곘지만 좀 더 체계적으로 기능을 나누어 파트를 나누는 기술을 배워 보고싶다.