본문 바로가기
C++

[인벤토리 시스템 구현] 연습문제

by 위니밍 2025. 3. 29.
반응형

[문제]

📌 요구사항

1. 클래스 설계

  • 최상위 클래스: Item
  • 파생 클래스들:
    • Equip (장착 아이템)
      • Weapon: LongSword, ShortSword (공격력 속성)
      • Armor: Upper, Lower, Glove, Shoes, Shield (방어력 속성)
    • Consumable (소모품 아이템)
      • HpPotion, MpPotion
    • QuestItem (퀘스트 아이템)
      • DragonTear

2. Inventory 클래스

  • 사용할 컨테이너: std::vector, std::list, std::map 중 택 1
  • 포함 기능:
    • addItem(Item* item) – 아이템 추가
    • removeItem(const std::string& itemName) – 아이템 제거
    • useItem(const std::string& itemName) – 소모품 사용
    • equipItem(const std::string& itemName) – 장착 아이템 장착
    • displayInventory() – 인벤토리 출력

3. Player 클래스

  • 기본 스탯:
    • name, hp=100, mp=100, attack=10, defense=5
  • 포함 기능:
    • useItem(Inventory&, const std::string& itemName)
    • equipItem(Inventory&, const std::string& itemName)
    • showStats()
  • 턴마다: hp/mp 3씩 감소, 소모품 사용 시 회복

🛠 구현 목표

  1. 클래스 정의
    • Item을 기반으로 Equip, Consumable, QuestItem 구현
    • 각 아이템 고유 속성 정의
  2. Inventory 관리
    • 아이템의 추가/제거/사용/장착을 구현한 인벤토리 시스템 구현
  3. 게임 루프
    • 매 턴마다:
      1. 랜덤 아이템 생성
      2. 플레이어 행동 선택: 사용 / 장착 / 인벤토리 확인
      3. 스탯 및 인벤토리 출력
      4. 퀘스트 아이템 DragonTear을 10개 획득하면 게임 종료

 

 

[구현]

 

[메인]

 

 

[턴 넘기기]

 

[아이템 사용]

 

 

[장비 사용]

 

 

[아이템 제거]

 

github : https://github.com/Chunyounghawn/Cpp-Basic-Study/tree/ed5960e6946af77ad16dd845cec72411c75daf03/HeroGame

 

반응형

'C++' 카테고리의 다른 글

2. 참조 vs 포인터  (0) 2025.01.30
(C++) 1. 헤더파일  (0) 2025.01.26