본문 바로가기

카테고리 없음

8월30일 공부 : 마무리

오늘의 구현 내용

1. 상점에서 구매한 물품이 인벤토리에 뜨기

2. 인벤토리에 있는 걸 상점 판매기능을 써보기

를 써두고 했습니당

 

 

 

static void Setting()
    {
        player = new Character("Jamnini", "도적", 279, 2763, 37, 420, 1000);
        player.AddItem("롱 소드");
        player.AddItem("야만의 몽둥이");
    }

 

일단 먼저 기본적으로 아이템을 쥐어주었습니다.

인벤토리가 제대로 작동하는지 확인하기 위해서 넣어준것도있습니다.

 

  static void Inventory()
    {
        Console.Clear();
        Console.WriteLine("인벤토리");

        Console.WriteLine("보유한 아이템 목록:");
        foreach (string item in player.Inventory)
        {
            Console.WriteLine(item);
        }

        Console.WriteLine("\n0. 나가기");

        CheckValidInput(0, 0);
        Intro();
    }

 

플레이어의 아이템을 보여주는 인벤토리도 완성

 

이대로 실행 시켜주면

 

이렇게 나옵니당

 

 

 

 

상점은 각각 이렇게

 

 

물품이 추가될때마다 

private Dictionary<string, int> itemPrices = new Dictionary<string, int>

도 추가해줘야합니다 ㅠ 안그러면 나중에 곤란하게 되는데 그건 이따 설명해드리겠습니다

 

 

물품 구매시 소지액으로부터 차감되고 인벤토리로 그 아이템이 옮겨가는 코드입니다

또한 상점에서 판매하기도 원할하게 진행되기위해 additem에 값을 넣어주는걸로 만들고

 

 

static void SellItem()
    {
        Console.Clear();
        Console.WriteLine("판매할 아이템을 선택하세요:");

        for (int i = 0; i < player.Inventory.Count; i++)
        {
            Console.WriteLine($"{i + 1}. {player.Inventory[i]}");
        }

        Console.WriteLine("0. 취소");

        int input = CheckValidInput(0, player.Inventory.Count);
        if (input == 0)
        {
            Shop();
        }
        else
        {
            SellConfirmed(player.Inventory[input - 1]);
        }
    }

    static void SellConfirmed(string itemName)
    {
        int sellPrice = player.GetItemPrice(itemName) / 3;
        Console.Clear();
        Console.WriteLine($"{itemName}을(를) 판매합니다.");
        Console.WriteLine($"판매 가격: {sellPrice}");
        Console.WriteLine("1. 판매하기");
        Console.WriteLine("2. 취소");

        int input = CheckValidInput(1, 2);
        switch (input)
        {
            case 1:
                player.ModifyGold(sellPrice);
                player.RemoveItem(itemName);
                Console.WriteLine($"{itemName}을(를) 판매했습니다. 소지금: {player.Gold}");
                Console.WriteLine("아무 키나 누르면 메인 화면으로 돌아갑니다.");
                Console.ReadKey();
                Shop(); // 판매하기 완료 후에는 상점으로 돌아가도록 변경
                break;
            case 2:
                Shop();
                break;
        }
    }

 

상점에 판매하기 기능을 통해 additem에 있는 물건들을 상점가격의 3분의1만큼 판매하고

이 목록에서 없으면 0원처리했습니다

 

아까 말했던 목록추가를 안할경우 곤란해진다 = 판매시 0원이 된다 입니다

 

내일 팀원들이랑 머지하면서 적용해볼텐데

 

오늘 있던 화나는점이라면

 

static void SellItem()
    {
        Console.Clear();
        Console.WriteLine("판매할 아이템을 선택하세요:");

        for (int i = 0; i < player.Inventory.Count; i++)
        {
            Console.WriteLine($"{i + 1}. {player.Inventory[i]}");
        }

        Console.WriteLine("0. 취소");

        int input = CheckValidInput(0, player.Inventory.Count);
        if (input == 0)
        {
            Shop();
        }
        else
        {
            SellConfirmed(player.Inventory[input - 1]);
        }
    }

    static void SellConfirmed(string itemName)
    {
        int sellPrice = player.GetItemPrice(itemName) / 3;
        Console.Clear();
        Console.WriteLine($"{itemName}을(를) 판매합니다.");
        Console.WriteLine($"판매 가격: {sellPrice}");
        Console.WriteLine("1. 판매하기");
        Console.WriteLine("2. 취소");

        int input = CheckValidInput(1, 2);
        switch (input)
        {
            case 1:
                player.ModifyGold(sellPrice);
                player.RemoveItem(itemName);
                Console.WriteLine($"{itemName}을(를) 판매했습니다. 소지금: {player.Gold}");
                Console.WriteLine("아무 키나 누르면 메인 화면으로 돌아갑니다.");
                Console.ReadKey();
                Shop(); // 판매하기 완료 후에는 상점으로 돌아가도록 변경
                break;
            case 2:
                Shop();
                break;
        }
    }

 

이 부분이 문제였는데

판매하면 갑자기 값을 못 불러오고 디버그가 꺼지는? 그런 오류가 있어서 

그거 해결하려고 없애보고 복사해보고 붙여넣어보고 별 다 하다가

Chat GPT 도움 받고 코드 재 정리하고 해서 겨우 해결한거

뭔가 내가 더 잘할수있었는데 못한거..? 그게 제일 문제였던거같습니다.