문제 1: RPG 장비 클래스 설계
문제 설명
게임 캐릭터가 장착할 수 있는 다음 4가지 아이템 클래스를 정의하려고 합니다.
각 클래스는 체력(HP), 마력(MP), 민첩성(AGI), 행운(LUK)의 능력치를 가지고 있으며, 생성자를 통해 초기화되어야 합니다.
다음 조건에 맞게 Clothing, Shoes, Cloak, Accessory 클래스를 각각 정의하시오.
요구 사항
- 각 클래스는 다음 멤버 변수를 가져야 합니다:
- int hp, int mp, int agi, int luk
- 생성자에서 능력치 값을 임의로 초기화하세요.
- 예: Clothing: 체력 10, 마력 5, 민첩성 3, 행운 1 등
- 생성자의 종류는 두 가지여야 합니다. 예를들어 1) 임의로 자동 초기화 Clothing() 2) 매개변수로 전달Clothing(int hp_, int mp_, int agi_, int luk_)
- 각 클래스는 다음 멤버 함수를 포함해야 합니다:
- int GetHP(), GetMP(), GetAGI(), GetLUK()
- 모든 클래스는 public 접근 제어자를 사용하세요.
예시 출력 (힌트용)
Clothing c;
cout << "Clothing HP: " << c.GetHP() << endl; // Clothing HP: 10
문제 2: 장비 장착 시스템 구현
문제 설명
앞에서 만든 Clothing, Shoes, Cloak, Accessory 클래스들을 바탕으로 플레이어가 장비를 착용할 수 있는 EquipmentSlot 클래스를 작성해봅시다.
아래 조건에 맞게 클래스를 설계하고, 장비를 장착하는 함수를 구현하세요.
요구 사항
- 다음 객체를 미리 생성하시오:
- Clothing 클래스의 객체: clo5 (5레벨 의복)
- Shoes 클래스의 객체: shoes5 (5레벨 신발)
- Cloak 클래스의 객체: cloak15 (15레벨 망토)
- Accessory 클래스의 객체: acc15 (15레벨 장신구)
- EquipmentSlot 클래스를 정의하시오. 이 클래스는 다음 멤버를 가집니다:
- Clothing* clothing
- Shoes* shoes
- Cloak* cloak
- Accessory* accessory
- 다음 멤버 함수를 구현하시오:
- void EquipClothing(Clothing* item);
- void EquipShoes(Shoes* item);
- void EquipCloak(Cloak* item);
- void EquipAccessory(Accessory* item);
- 장착 후, 다음처럼 출력하면 각 장비의 능력치를 확인할 수 있어야 합니다:
slot.EquipClothing(&clo5);
slot.EquipShoes(&shoes5);
slot.EquipCloak(&cloak15);
slot.EquipAccessory(&acc15);
문제 3: 아이템 능력치 연산자 오버로딩
문제 설명
앞에서 생성한 Clothing, Shoes, Cloak, Accessory 클래스들은 각각 능력치를 가지고 있습니다.
이번에는 다음 규칙에 따라 두 아이템을 더하거나 빼는 연산자(+, -) (혹은 +=, -=)를 오버로딩하는 기능을 구현하세요.
규칙
- 5Lv 아이템은 -속성 (-=도 가능) (착용 시 능력치가 감소하는 저주 아이템이라고 가정)
- 15Lv 아이템은 +속성 ( +=도 가능) (능력치가 증가하는 강화 아이템이라고 가정)
- 각 아이템 클래스에서 + (or +=) 연산자는 다른 아이템과의 능력치를 더하는 연산을 구현하세요.
- - (or -=) 연산자는 다른 아이템과의 능력치를 빼는 연산을 구현하세요.
- 연산 결과는 새로운 임시 아이템 객체를 반환해야 합니다.
요구 사항 요약
- 각 클래스(Clothing, Shoes, Cloak, Accessory)에 연산자 오버로딩 추가
- Clothing operator+(const Clothing& other);
- Clothing operator-(const Clothing& other);
(Shoes, Cloak, Accessory도 동일)
마지막으로 장비슬롯을 출력하는 함수를 만들어주세요. ex) void printEquipmentSlot()
완벽한 정답은 없습니다.
아래는 참고만 해주세요 :)

'C++' 카테고리의 다른 글
| [C++] const char* str와 char* const str의 차이 (1) | 2025.08.05 |
|---|---|
| [C++] 2차원 배열 선언과 동시에 초기화 vs 선언된 배열 초기화 : 재초기화 오류 (0) | 2025.07.11 |
| [C++] 지역 변수(Local Variable) 이름(변수명)과 전역 변수(Global Variable) 이름(변수명)이 같을 경우: Shadowing에 대해서 (0) | 2025.07.11 |