아이템 구매
- 상점에서 구매가능한 아이템을 보여주고 선택지를 준다.
- 입력받는다.
- 선택한 번호 확인
- 아이템 살 돈이있는지 확인한다.
- 아이템 가져갈 무게가 있는지 확인한다.
- 통과되면 골드를 뺀고 아이템을 유저 인벤토리에 추가시켜준다.
1.상점에서 구매가능한 아이템을 보여주고 선택지를 준다.
cout << "구매 가능한 아이템 : " << endl;
for (size_t i = 0; i < items_for_sale.size(); i++)
{
cout << i + 1 << "." << items_for_sale[i].GetName()
<< ": 가격 " << items_for_sale[i].GetPrice()
<< ", 무게 " << items_for_sale[i].GetWeight() << endl;
}
cout << "4.뒤로가기" << endl;
cout << "구매할 아이템을 선택하세요 : " << endl;
int choice;
cin >> choice;
우선 for문을 보겠다.
size_t 이거는 unsigned int와 같은 음수가 되지않는 타입이다. 배열의 경우 0보다 낮은곳을 가리키게되면 쓰레기값이 나가거나 치명적 오류가 생길 수 있기 때문에 안정성을 위해 넣어줬다. 그 후 4. 뒤로가기로 해줬다. 확장성을 위해서라면 items_for_sale.size() + 1 로 해도 되지만 나는 뒤로가기 번호가 자꾸 바뀌면 불편할거같아서 4로 고정했다.
2. 입력받는다
int choice;
cin >> choice;
이건... 이제 넘어가겠습니다
3.선택한 번호 확인
if (choice == 4) return;
Item selected_item = items_for_sale[choice - 1];
4는 바로 리턴 안녕히계세요..
입력받은 아이템은 시작이 0이지만 유저에게는 입력 숫자를 1부터 해달라고 했기 때문에 -1을 해줍니다.
4.아이템 살 돈이있는지 확인한다
if (character.GetGold() < selected_item.GetPrice())
{
cout << "골드가 부족합니다. 보유 골드 : " << character.GetGold() << endl;
return;
}
5.아이템 가져갈 무게가 있는지 확인한다.
if (character.inventoryweight + selected_item.GetWeight() > character.maxinventoryweight)
{
cout << "인벤토리 최대치를 초과합니다. 현재 무게 : "
<< character.inventoryweight << " "
<< selected_item.GetName() << " 무게 : "
<< selected_item.GetWeight() << endl;
return;
}
6.통과되면 골드를 뺀고 아이템을 유저 인벤토리에 추가시켜준다.
character.SetGold = character.GetGold - selected_item.GetPrice();
character.add_to_inventory(selected_item);
items_for_sale.erase(items_for_sale.begin() + (choice - 1));
cout << "구매 성공! 남은 골드 : " << character.GetGold() << endl;
아이템 판매
- 보유중인 아이템을 체크한다.
- 보유중인 아이템의 이름과 가격을 띄운다.
- 아이템을 삭제하고 돈을 준다
'C++' 카테고리의 다른 글
[프로그래머스] 3진법 변환 후 뒤집어 10진법 변환 (0) | 2025.02.05 |
---|---|
C++[아이템을 다른 헤더파일에서 가져와서 사용하기] (0) | 2025.01.14 |
C++ [텍스트 RPG에서 상점 만들기(1. 플로우차트, 상점 입장)] (0) | 2025.01.10 |
C++[클래스를 이용해 동물소리 출력] (0) | 2024.12.26 |
C++ [오름차순과 내림차순 정렬] (1) | 2024.12.24 |