프로젝트를 마치면서 내가 쓴 코드를 보니까 정리가 하나도 안되어 작성한 나도 보기 힘들어 전부는 아니지만 한번 정리를 해보기로 했다. 별기능이 없었는데.... 한 파일 978줄.... 가독성이 너무 떨어져 파일을 쪼개보기로 하였다. Program.cs에 있는 코드를 Item.cs / Dungeon.cs / Player.cs 로 나누어 주었다. Program.cs에 선언한 List 이름 앞에 각 파일 안에 들어가 있는 클래스 이름을 붙여주었다. 결과물은 바뀐 것이 없으나 그래도 파일들 정리를 '조금'이라도 해보았다. 처음부터 파일을 나누고 했더라면 좀 더 알아보기 쉽고 찾기도 쉬웠을 것이다. 이번 작업으로 처음 설계가 중요하다라는 것을 다시 깨닫았다. 정말 조금만 나눴는데 200줄이 줄었다 시간이 좀 더 있었으면 기능 별 파일을 만들어서 나누었을 것 같은데 아쉽다.
콘솔에 있는 데이터를 저장하는 방법을 찾다 JSON 파일에 저장 후 불러오는 방법을 생각해 냈다. 저장에 Newtonsoft.Json 프레임워크를 사용하였다. 다음 방법은 도구 -> Nuget 패키지 관리자 -> 솔루션용 Nuget 패키지 관리로 들어가 다운 받으면 된다. 다운 후 사용을 해주고 세이브 / 로드 함수를 만들어 주었다. 살펴보자면 JsonConvert.SerializeObject(object) : list -> Json 파일 형식 변경 JsonConvert.DeserializeObject<List<list>>(json); : Json -> 리스트 파일 형식 변경 File.WriteAllText(@"경로", json); : Data를 .json 파일에 저장 File.ReadAllText(@"경로") : json 파일에서 Data 불러오기 저장/불러오기 경로가 서로 다르거나 없는 경로라면 작동을 하지 않기 때문에 조심해야한다. 그리고 List 하나의 항목만 저장은 가능하나 불러올때는 이유는 잘 모르겠지만 불러올 수 없었다. 그래서 새로운 리스트를 만들어 add를 해주어 Array로 감싸주었다. 데이터를 쌓은 후 저장을 해고 종료 후 다시 실행 데이터가 없는 것을 확인 후 로드 데이터가 고스란히 들어오는 것을 확인 하였다. 이게 저장 불러오기를 할 때 많이 사용하는 방법인지는 알고 있지 못하나 프레임워크를 이용해 간단하게 구현을 해보았다
js와 달리 C#의 array는 뭔가 좀 더 복잡한 것 같다. Array.push()만 쓰면 추가 되는 js 와 달리 C#에서는 새요소를 추가하려면 조금 복잡하게 넣어야 하는 것 같다. 1. Array.CopyTo() 새로운 요소를 수용하기 위해 더 큰 Array를 할당하는 방법이다. 2. Enumerable.Concat 두 입력 시퀀스의 요소를 연결하는 메서드이다 3. 목록으로 변환 리스트로 변환후 다시 어레이로 변환 시키는 방법이 있을것 같다.
댓글
댓글 쓰기