Atani 퀴즈
프로그래머스 코테 연습
C++
코드 연습
던전 탈출 텍스트 RPG
역할 정리
Types.h:StatusType(HP/MP/AP/DP),JobType(전직 종류) 같은 공용enum class와Status/Item/StatModifier구조체, 문자열 변환 함수들을 모아둔 공통 헤더StatOperator:variant<plus<int>, multiplies<int>, minus<int>>로 "더하기/곱하기/빼기" 연산 자체를 값처럼 담아서 넘길 수 있게 함statusMap:StatusType→Status의 멤버 포인터(int Status::*)를 매핑해, 어떤 스탯이든 하나의 함수로 조회/수정할 수 있게 함
HeroStatus: 용사의 이름과Status(HP/MP/AP/DP)를 들고 있는 클래스inputHeroStatus(istream&): 조건(HP·MP ≥ 50, 공격력·방어력 ≥ 20)을 만족할 때까지 반복 입력받음controlHeroStatus(StatusType, StatModifier):statusMap으로 멤버 포인터를 얻고,variant에 담긴 연산자를visit으로 실행해 해당 스탯만 증감시킴
HeroItem: 포션 등 아이템을map<string, Item>으로 관리canUsePotion/usePotion/getPotionEffect: 포션 보유 수량 확인, 소모, 회복량 조회setItem: 인벤토리 총 수량이 10개 미만일 때만 아이템 추가
HeroEnhancement(GameManagement상속): 전투 전 강화 메뉴를 반복 출력- HP/MP 포션 사용, 공격력/방어력 2배 증가, 현재 능력치 확인,
0을 입력하면gameStart()를 호출하고 메뉴 종료
- HP/MP 포션 사용, 공격력/방어력 2배 증가, 현재 능력치 확인,
Player(추상 클래스): 모든 직업의 공통 동작을 정의attack(Monster*): 직업마다 다르게 구현해야 하는 순수 가상 함수takeDamage(int, string): 받은 데미지에서 방어력을 뺀 값(최소 1)만큼 HP 감소Warrior/Mage/Thief/Archor:Player를 상속받아 전직 시 각각 HP/MP/공격력/방어력을 30 증가시키고,attack()에서 직업별 대사와 함께 공격력만큼 몬스터에게 데미지를 줌
Monster(추상 클래스) /Slime:Player와 대칭 구조로,MonsterInfo(이름·HP·공격력·방어력·드랍 아이템)를 들고attack(Player*)과takeDamage(int)를 제공GameManagement:enterDungeon(Player*, Monster*)에서 플레이어 HP와 몬스터 HP가 모두 0보다 큰 동안 턴을 번갈아가며attack()을 호출하는 전투 루프를 담당main(textrpg.cpp): 이름 입력 → 능력치 입력 → 강화 → 전직 → (전투) → 승패 출력까지 전체 흐름을 순서대로 호출
