코딩 학습/C와 C++

C++ 팀프로젝트 - 텍스트 RPG 게임 만들기(2)

이개 2026. 3. 27. 20:26

사운드 기능을 만들어보면 좋을 것 같다.

 

void EndTurn(); 추가

 

전투중이 아닐 때 다이스를 볼 수 있게 만듦

레벨업 시에는 

MaxHP += 3 해주기

 

죽은 상태

죽으면 체력은 0 고정

 

 

아이템

 힐링포션

 HP+5

 

TakeHeal

TakeShield

 

테이크 데미지에서 데미지를 받을 수 있게 조정

 

현재 경험치가 목표 경험치에 도달하면 레벨업

 

 

나중에 주사위 면을 강화하기

 

const 멤버변수는 초기화 리스트나 선언 시에 초기화해야한다. 생성자 본문에서는 안 됨.

 

함수 리팩토링

// 대미지 입음
void Character::TakeDamage(int Damage)
{
    // 대미지 계산
    int Damage_ = Damage - Shield;

    // 실드가 데미지보다 크면 0 대미지로 처리
    if (Damage_ < 0)
    {
        Damage_ = 0;
    // 실드 처리
    if (Damage >= Shield) {
        Damage -= Shield;
        Shield = 0;
    }
    else {
        Shield -= Damage;
        Damage = 0;
    }

    // 대미지 적용
    cout << Name << "의 총 피해량: " << Damage_ << endl;
    HP = HP - Damage_;

    // HP는 최저 0으로 관리
    // 죽은 상태는 HP == 0 여부로 판단
    if (HP <= 0)
    {
        HP = 0;
    }
    cout << Name << "의 총 피해량: " << Damage << endl;
    HP = max(0, HP - Damage); // max로 0 이하 방지
}


// 바꾼거 ======================================================

// 대미지 입음
void Character::TakeDamage(int Damage)
{
    // 대미지 계산
    int Damage_ = Damage - Shield;

    // 실드가 데미지보다 크면 0 대미지로 처리
    if (Damage_ < 0)
    {
        Damage_ = 0;
    // 실드 처리
    if (Damage >= Shield) {
        Damage -= Shield;
        Shield = 0;
    }
    else {
        Shield -= Damage;
        Damage = 0;
    }

    // 대미지 적용
    cout << Name << "의 총 피해량: " << Damage_ << endl;
    HP = HP - Damage_;

    // HP는 최저 0으로 관리
    // 죽은 상태는 HP == 0 여부로 판단
    if (HP <= 0)
    {
        HP = 0;
    }
    cout << Name << "의 총 피해량: " << Damage << endl;
    HP = max(0, HP - Damage); // max로 0 이하 방지
}

 

인벤토리매니저 싱글톤으로

인벤토리

 

수정해야할 것 같은 편의성

  • 전체 리롤 기능
    • 전체 주사위를 다시 굴리고 싶을 때, 커맨드 입력 횟수가 너무 많아지므로 전체 리롤 기능이 있으면 좋겠다.
  • 배틀 시작 전에 몬스터가 몇 마리 나타났는지 출력되었으면 좋겠음
    • 전투 화면에 표시되므로 시작 후에 알 수 있긴 하지만, 스테이지 사이사이 구분을 위해서 출력되는 것이 좋다고 생각함.
  • 액션 해제하기 메뉴 선택 후에 뒤로가기(취소)가 가능해야할 듯