동일한 주소를 가르키고있는 아이템
문제: 상점에서 동일한 아이템을 여러 개 구매하고나서 해당 아이템을 사용하거나 판매시 오류 발생
원인: 아이템을 구매할 때 새로 아이템을 생성하여 주는 것이 아니라 상점에 있는 아이템의 포인터를 전달해주는 방식이었다.
해결 방안: clone 패턴으로 같은 아이템을 새로 만들어서 내보내는 방식으로 해결하였다.
Item* clone() const override{
return new HealthPotion(*this);
}
Item* item = sellList[itemindex]->clone();
반복하여 사용되는 부분 함수로 변환
몬스터 배틀과 보스 배틀에서 반복되어 사용되는 구문을 함수로 만들었다.
랜덤으로 아이템을 사용하는 함수
void GameManager::useRandomItem(Character* player)
{
size_t itemsize = player->getInventory().size();
if (itemsize >= 1)
{
random_device rd1; // 난수 시드
mt19937 gen(rd1()); // Mersenne Twister 엔진
uniform_int_distribution<> dis(1, 2); // 1~2 균등 분포
int useitemrandom = dis(gen); // 난수 생성
uniform_int_distribution<> dis2(0, int(itemsize) - 1);
int itemindex = dis2(gen); // 난수 생성
if (useitemrandom == 1)
{
cout << " | " << player->getInventory()[itemindex]->getName() << "아이템 사용" << " | " << endl;
if (player->getInventory()[itemindex]->getName() == "AttackBoost")
{
player->setisBoosted(player->getisBoosted() + 1);
}
player->useItem(itemindex);
}
}
return;
}
배틀 도중 사용한 공격부스트를 초기화하는 함수
void GameManager::resetBoost(Character* player)
{
if (player->getisBoosted() > 0)
{
player->setAttack(player->getAttack() - (10 * player->getisBoosted()));
player->setisBoosted(0);
}
return;
}
'내일배움캠프-언리얼' 카테고리의 다른 글
| [내일배움캠프 - 언리얼] DAY 27 - 텍스트 콘솔 RPG - 5 (0) | 2026.01.06 |
|---|---|
| [내일배움캠프 - 언리얼] DAY 26 - 텍스트 콘솔 RPG - 4 (0) | 2026.01.05 |
| [내일배움캠프 - 언리얼] DAY 24 - 텍스트 콘솔 RPG - 2 (0) | 2025.12.31 |
| [내일배움캠프 - 언리얼] DAY 23 - 텍스트 콘솔 RPG - 1 (0) | 2025.12.30 |
| [내일배움캠프 - 언리얼] DAY 22 - 5번 과제 리뷰 (0) | 2025.12.29 |