카테고리 없음

본캠프_10일차_TIL

티-히히 2024. 9. 25. 22:20

오늘의 목표

아이템들을 json형태로 리스트화 시키기.

 

 

아이템은 더 많아질텐데 관리가 힘들 것같아

따로 아이템차트 파일을 빼두는 방식을 생각했습니다.

 

확장자는 json,xml,csv,데이터베이스 방법이 있으나

제일 json이 코드를 더 간결하게 해줄 것 같아 json으로 채택했습니다.

 

json을 사용하기위해 일단 Nuget패키지관리에 들어가 Newtonsoft.Json을 설치해줍니다.

 

설치 후 아이템목록 JSON파일을 만들어줍니다.

[
  {
    "name": "수련자 갑옷",
    "attackPower": 0,
    "defensePower": 5,
    "description": "수련에 도움을 주는 갑옷입니다.",
    "price": 1000
  },
  {
    "name": "무쇠갑옷",
    "attackPower": 0,
    "defensePower": 9,
    "description": "무쇠로 만들어져 튼튼한 갑옷입니다.",
    "price": 1000
  },
  {
    "name": "스파르타의 갑옷",
    "attackPower": 0,
    "defensePower": 15,
    "description": "무쇠로 만들어져 튼튼한 갑옷입니다.",
    "price": 3500
  },
  {
    "name": "낡은 검",
    "attackPower": 2,
    "defensePower": 0,
    "description": "무쇠로 만들어져 튼튼한 갑옷입니다.",
    "price": 600
  },
  {
    "name": "청동도끼",
    "attackPower": 5,
    "defensePower": 0,
    "description": "무쇠로 만들어져 튼튼한 갑옷입니다.",
    "price": 1500
  },
  {
    "name": "스파르타의 창",
    "attackPower": 7,
    "defensePower": 0,
    "description": "무쇠로 만들어져 튼튼한 갑옷입니다.",
    "price": 1000
  }
]

 

그리고 JSON 파일경로를 설정해 준 후 가져온 JSON을 읽어온 후

LIST로 변환합니다.

 string jsonFilePath = Path.Combine(parentDirectory, relativePath);
 Console.WriteLine($"jsonFilePath : {jsonFilePath}");
 // 파일이 존재하는지 확인
 if (File.Exists(jsonFilePath))
 {
     // JSON 파일의 내용을 읽어들임
     string jsonContent = File.ReadAllText(jsonFilePath);
     // JSON 문자열을 Item 리스트로 변환
     List<Item> defaultShopItems = JsonConvert.DeserializeObject<List<Item>>(jsonContent);
     Shop shop = new Shop(startingItems, defaultShopItems);
     EnterGame(warrior, inventory, shop);
 }

 

 

 

 

 

List<Item> defaultShopItems = new List<Item>
{
    new Item("수련자 갑옷",0, 5 ,"수련에 도움을 주는 갑옷입니다.  ", 1000),
    new Item("무쇠갑옷",0,9,"무쇠로 만들어져 튼튼한 갑옷입니다."   , 1000),
    new Item("스파르타의 갑옷",0,15,"무쇠로 만들어져 튼튼한 갑옷입니다.", 3500),
    new Item("낡은 검",2,0,"무쇠로 만들어져 튼튼한 갑옷입니다.", 600),
    new Item("청동도끼",5,0,"무쇠로 만들어져 튼튼한 갑옷입니다.", 1500),
    new Item("스파르타의 창",7,0,"무쇠로 만들어져 튼튼한 갑옷입니다.", 1000)

};*/


원래 넣었던 defaultShopItems리스트입니다. 

일일히 메인에서 넣어줘야했던 정보들인데 이제 JSON을 따로 분리해서 관리할 수 있게 되었습니다.