카테고리 없음

8월 22일 TIL

skybluesky 2023. 8. 22. 19:28

        public static void SaveData(PlayerInfo playerInfo)
        {
            string saveJson = JsonConvert.SerializeObject(playerInfo, Formatting.Indented);
            File.WriteAllText("savefile.json", saveJson);
            Console.WriteLine("저장완료");
        }

        public static PlayerInfo LoadData()
        {
            string loadJson = File.ReadAllText("savefile.json");
            PlayerInfo loadPlayerInfo = JsonConvert.DeserializeObject<PlayerInfo>(loadJson);
            return loadPlayerInfo;
        }

데이터 세이브 & 로드 기능 구현에 성공했다

정상적으로 json파일이 생성되는것을 확인

현재 플레이어의 정보만 저장하지만 아이템 기능 구현 후 보유 아이템 등도 추가로 저장하도록 구현할 예정

 

인벤토리 창

현재 보유중인 아이템을 표시한다

1번을 누르면 장비를 장착하거나 해제할 수 있는 창으로 넘어간다

장착관리 창으로 넘어가면 각 아이템에 순서가 붙는다

        public static void PrintEquipSetting()
        {
            i = 1;
            foreach (Item item in items)
            {
                if (item.isBought)
                {
                    if (item.isEquip)
                        Console.WriteLine($"{i++}.[E]{item.itemName}");
                    else
                        Console.WriteLine($"{i++}.{item.itemName}");
                    item.itemIndex = i;
                    Console.SetCursorPosition(2, Console.CursorTop + 1);
                }
            }
            Console.SetCursorPosition(2, 32);
        }

PrintEquipSetting()메서드를 호출하여 i와 같은 값을 item구조체 필드인 itemIndex에 저장한다

itemIndex가 고유값이 아닌 장비창에 표시된 순서대로 부여된다

번호를 입력하면 오른쪽에 아이템에 대한 상세 내용이 출력된다

이 상태에서 스페이스바 입력시 장착 또는 해제하고 다른 키가 입력된다면 선택이 취소된다

장비 장착 여부가 실시간으로 적용된다

아이템 설명 텍스트가 지정한 영역 밖으로 나오지 못하게 출력범위를 제한하는 기능 구현중인데 어려움을 겪는 중

내일 튜터님꼐 질문해봐야할듯