오늘 구현한 기능
인벤토리 크기 맞춤, 인벤토리 크기 정렬, 상점 구현, 상점 구매, 판매기능 구현, 아이템 장착 개선(공격과 방어 아이템은 하나만 장착 가능)
구현 하면서 어려웠던 점
아이템이 적었을 때는 단순히 배열을 하나 더 만들어서 관리 했지만 나중에 가서 다른 함수나 클래서에서 이 데이터에 접근을 하려면 for문을 이용하여 각 객체마다 고유한 값을 가지고 있었어야 됐다. 이를 해결하기 위해 기존의 배열을 삭제하고 객체 지향적으로 클래스에 프로퍼티를 추가하여 해결했다.
상점에서는 구입을 하면서 리스트에 정보값이 넘어가야 하고 구입함과 동시에 각 장비의 공격력과 방어력만큼 플레이어의
스텟을 변화시켜야 하고 상태보기와 인벤토리 관리에 모두 데이터가 연동해서 출력되야 하는 부분이 굉장히 까다로웠다.
판매하는 부분은 더욱 심했다. 나는 아이템 목록과 판매 아이템 목록을 리스트를 따로 만들어서 객체들을 같은 이름으로 동시에 선언했는데 이 부분이 엄청난 발목을 잡았다. 아무리 이름이 같다해도 결국 주소값이 달라서 판매를 할 때 아이템 리스트의 정보값만 바뀌고 상점아이템 목록의 정보값은 바뀌지 않았다. 이러한 문제를 상점아이템 리스트에서 인자를 빼내와서 아이템 목록에 넣어주었더니 문제는 해결됐다.
그리고 아이템을 구매하여 존재 하는지 안하는지 판별하는 bool 변수를 통해 아이템 장착 유무를 알아내려 했지만 결국 장착을 했는지 안했는지에 관한 프로퍼티와 현재 장착 상태를 나타내는 프로퍼티까지 추가해야만 다양한 기능을 추가할 때 접근하기 쉽고 구현하기 가볍다는 것을 깨달았다.
내일 할 것
던전 기능을 추가하여 개인과제의 챌린지 기능을 모두 완수할 것이다.
만약 모두 다 구현했다면 강화 기능을 추가해 볼 것이다.
그리고 그래도 시간이 남으면 정말 복잡하게 구현해놓은 부분의 코드들을 정리하고
클래스별로 세분화하여 따로따로 관리 해보는 작업을 실행할 것이다.
'TIL > C#' 카테고리의 다른 글
개인 프로젝트 ConsoleRPG 4일 차(마무리) (0) | 2023.08.23 |
---|---|
개인 프로젝트 ConsoleRPG 3일 차 (0) | 2023.08.22 |
개인 프로젝트 ConsoleRPG 1일 차 (0) | 2023.08.18 |
C# LeetCode - 80 Largest Rectangle in Histogram 풀이 (0) | 2023.08.17 |
상속 virtual / abstract (0) | 2023.08.16 |