[TIL] Text RPG 제작하기(6)

주소리·2026년 7월 22일

TIL

목록 보기
29/48

1-2 포션 차감하기

코드를 작성하기에 앞서 생각해보면 좋을 지점이 있습니다. 지금 구현만 보았을 때는 강화 함수 내에서 포션 갯수 변수를 만들 수는 있습니다. 다만 전체 흐름을 생각하면 나중에 포션을 따로 제작하기도 하고 인벤토리도 구현해야 하므로 포션 갯수를 item.cpp에서 인벤토리와 함께 관리하는 방향이 낫지 않을까 합니다.

이 방향성을 ai와 논의해보자 좀 더 나은 방향이 제시되었습니다.

Inventory
어떤 아이템을 몇 개 가지고 있는지 관리
아이템이 있는지 확인
사용하면 개수 감소

Item
아이템의 이름, 종류, 효과 같은 정보 관리

이렇게 구분하는 게 나중에 추가될 아이템을 고려해보았을 때 나을 듯 합니다. 그럼 포션이 필요한 강화라면 인벤토리에 사용을 요청하는 방향으로 가보겠습니다.

인벤토리 설계는 나중 스탭에 있으니 일단 초기 작업만 해두겠습니다.

주어진 구현항목은 다음과 같습니다만, 앞선 단계이니 살짝만 건들여보겠습니다.

구현 항목

  • Item 구조체 정의하기: name, price, void PrintInfo() const
  • #include <vector> 추가하기
  • vector<Item> inventory 선언하기
  • 전투 승리 시 inventory.push_back(droppedItem) 연결하기
  • 메인 메뉴 추가하기: 1. 던전 / 2. 인벤토리 / 0. 종료
  • 인벤토리 메뉴에서 range-for로 전체 아이템 출력하기


우선 구조체를 선언했습니다.

구조체 선언?

  • 새로운 자료형을 만드는 행위
  • main 함수 전에 작성
  • 양식
    struct 구조체 이름
    {
    자료형 변수이름;
    자료형 변수이름;
    반환형 함수이름() const
    {
    // 함수 내용
    }
    };

이라기는 합니다. 다만 main에 넣으면 길어질 것 같군요.
Item.cpp나 inventory.cpp에 선언해서 호출할 수 있으면 좋겠습니다.
혹은 다른 방법이 있는지 알아보겠습니다.

드디어 class를 한번 써보지요. class를 선택한 이유는 아래와 같습니다.

클래스로 묶기 좋은 경우
다음 중 2개 이상 해당하면 클래스를 고려

  • 관련된 데이터가 여러 개 있다
    예: 체력, 공격력, 위치, 이름
  • 그 데이터를 사용하는 함수가 여러 개 있다
    예: 이동하기, 공격하기, 데미지 받기
  • 같은 구조의 대상을 여러 개 만들고 싶다
    예: 몬스터 여러 마리, 학생 여러 명, 아이템 여러 개
  • 데이터를 함부로 바꾸면 위험하다
    예: 체력이 음수가 되면 안 됨

앞으로도 인벤토리나 포션은 계속 호출될 것이기 때문에 초장에 class로 묶어주겠습니다.

class를 처음 써봐서 설레는군요. 마주할 오류에 가슴이 뜁니다.

profile
게임개발 및 아트, TA

0개의 댓글