<aside> 💡 Notion 팁: 새 페이지를 만들고 템플릿 목록에서 데일리 일기를 선택해 매일 아래 양식을 자동으로 생성할 수 있어요.

</aside>

오늘은 무엇을 배웠나요

  1. 개인 과제 마무리
  2. 개인 과제 강의 시청

이야깃거리

상점 구현 시 상점에서 구매한 아이템은 인벤토리에 뜨게끔 수정했는데, 이게 기존 내 인벤토리 아이템은 빼고 구매한 아이템만 나온다!

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);
        }

Untitled

이거 추가하는 데 너무 힘들었다…

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();

아이템은 잘 뜨는데, 장착 관리에서 장착이 안되어 이 부분도 추가 수정해야 할 것 같다.

Untitled

음,, 수정했더니 장착은 잘 되는데 기존 아이템과 구매한 아이템의 인덱스가 겹치는 문제가 발생했다. 그리고 새로 구매한 아이템의 효과도 내 정보에 제대로 반영되지 않는다.

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]도 잘 표시된다.