<aside>
💡 Notion 팁: 새 페이지를 만들고 템플릿 목록에서 데일리 일기
를 선택해 매일 아래 양식을 자동으로 생성할 수 있어요.
</aside>
상점 구현 시 상점에서 구매한 아이템은 인벤토리에 뜨게끔 수정했는데, 이게 기존 내 인벤토리 아이템은 빼고 구매한 아이템만 나온다!
static void DisplayInventory()
{
Console.Clear();
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("인벤토리");
...
var table = new ConsoleTable("아이템명", "효과", "아이템 설명");
foreach (var item in inventory)
{
table.AddRow($"{item.ItemName}", $"{item.AbilityName} +{item.AbilityValue}", $"{item.ItemInfo}");
}
table.Write();
...
}
static void Store(List<int> boughtItems)
{
...
else
{
// 아이템 구매 시 골드 차감
player.Gold -= selectedItem.Gold;
boughtItems.Add(itemIndex);
// 구매한 아이템을 인벤토리에 추가
Items purchasedItem = new Items(selectedItem.ItemName, selectedItem.AbilityName, selectedItem.AbilityValue, selectedItem.ItemInfo);
inventory.Add(purchasedItem);
Store(boughtItems);
}
이거 추가하는 데 너무 힘들었다…
static void DisplayInventory()
{
...
var table = new ConsoleTable("아이템명", "효과", "아이템 설명");
// 기존 보유 아이템
for (int i = 0; i < items.Length; i++)
{
table.AddRow($"- {(equippedItems.Contains(i) ? "[E]" : "")}{items[i].ItemName}", $"{items[i].AbilityName} +{items[i].AbilityValue}", $"{items[i].ItemInfo}");
}
// 상점에서 구매한 아이템
for (int i = 0; i < inventory.Count; i++)
{
table.AddRow($"- {(equippedItems.Contains(i) ? "[E]" : "")}{inventory[i].ItemName}", $"{inventory[i].AbilityName} +{inventory[i].AbilityValue}", $"{inventory[i].ItemInfo}");
}
table.Write();
아이템은 잘 뜨는데, 장착 관리에서 장착이 안되어 이 부분도 추가 수정해야 할 것 같다.
음,, 수정했더니 장착은 잘 되는데 기존 아이템과 구매한 아이템의 인덱스가 겹치는 문제가 발생했다. 그리고 새로 구매한 아이템의 효과도 내 정보에 제대로 반영되지 않는다.
static void EquipItems()
{
...
// 기존 보유 아이템
for (int i = 0; i < items.Length; i++)
{
table.AddRow($"- {i + 1} {(equippedItems.Contains(i) ? "[E]" : "")}{items[i].ItemName}", $"{items[i].AbilityName} +{items[i].AbilityValue}", $"{items[i].ItemInfo}");
}
// 상점에서 구매한 아이템
for (int i = 0; i < inventory.Count; i++)
{
table.AddRow($"- {items.Length + i + 1} {(equippedItems.Contains(i + items.Length) ? "[E]" : "")}{inventory[i].ItemName}", $"{inventory[i].AbilityName} +{inventory[i].AbilityValue}", $"{inventory[i].ItemInfo}");
}
table.Write();
...
int input = CheckValidInput(0, (inventory.Count + items.Length));
if (input == 0)
{
DisplayGameIntro();
return;
}
// 사용자 입력값에서 1을 뺴서 아이템의 인덱스로 변환
int itemIndex = input - 1;
ItemEquipped(equippedItems, itemIndex);
EquipItems();
}
일단 이렇게 땜빵(?)은 했다. 장착 관리에서 인덱스도 안 겹치고 [E]도 잘 표시된다.