오늘부터 배운 C#을 바탕으로 팀 프로젝트를 진행한다. 프로젝트는 저번 과제기도 한 TextRpg, 근데 턴제 시스템을 곁들인. 팀원분들도 과제를 이미 진행하였기에 그 코드를 가져오면 쉽고 빠르게 끝날 것이다. 하지만 이번 팀프로젝트 또한 git으로 관리, 진행을 해야하는데, 기존 코드를 가져오게 되면 역할 분배가 어려울 것 같아 처음부터 진행하기로 하였다.
시작 전 와이어프레임을 진행하면서 캐릭터, 전투, 아이템 등등 구현해야하는 큰 틀이 잡혔다. 이 중 저번에 못하였던 저장 기능과 퀘스트 시스템을 구축하기로 하였다.
- 튜터님께서 아쉽다고 하여 수정 할 예정
- C# json을 이용한 저장 매커니즘
if (!Directory.Exists(SaveFolder)) Directory.CreateDirectory(SaveFolder); string path = Path.Combine(SaveFolder, $"save_slot_{slotNum}.json"); string json = JsonSerializer.Serialize(player,new JsonSerializerOptions { WriteIndented = true }); File.WriteAllText(path, json); Console.WriteLine($"Game saved to slot {slotNum}.");(내가 작성한 코드)
string path = Path.Combine(SaveFolder, $"saveslot{slotNum}.json");
Path클래스 - 경로와 같은 문자열을 관리하는 클래스 .Combine - 흔히 경로에 쓰이는 ~\~를 지정한 파일들 사이에 넣어준다.
string json = JsonSerializer.Serialize(player,new JsonSerializerOptions
{ WriteIndented = true });
JsonSerializer - json 직렬화 및 역질렬화를 관리하는 클래스
Serialize - 받은 객체를 json 문자열로 변환시켜주는 메서드
new JsonSerializerOptions - json으로 변환 시 세부 설정을 제어하는 객체 WriteIndented - json을 보기 좋게 들여쓰게 해줌(bool값으로 true면 들여씀)