오늘의 구현 내용
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 도움 받고 코드 재 정리하고 해서 겨우 해결한거
뭔가 내가 더 잘할수있었는데 못한거..? 그게 제일 문제였던거같습니다.