[TIL] Text RPG (Team Project) 3
Quest.cs를 만들면서 하고싶었던 것들!!
1. 퀘스트 리스트를 따로 만들어 거기에 작성하면 자동으로 퀘스트창에서 보이게 하기
2. 퀘스트 항목이 많아지는 경우 오류없이 목록 선택할 수 있도록 하기(단순 if문 말고)
1. 퀘스트 리스트
internal class QuestManager { public List<Quest> questList = new List<Quest>(); public static void InitQuests() { Quest quest1 = new Quest(); quest1.title = ""; quest1.description = ""; quest1.goalCount = 5; quest1.rewardItem = "스파르타의 창"; quest1.rewardGold = 5; Quest quest2 = new Quest(); quest2.title = ""; quest2.description = ""; quest2.goalCount = 1; quest2.rewardItem = "스파르타의 창"; quest2.rewardGold = 3; Quest quest3 = new Quest(); quest3.title = ""; quest3.description = ""; quest3.goalCount = 10; quest3.rewardItem = "오래 된 대검"; quest3.rewardGold = 20; questList.Add(quest1); questList.Add(quest2); questList.Add(quest3); } }
더 효율적인 방법이 있을 것 같긴한데 일단 이 방식이 내 머리로 쥐어짤 수 있는 한계였다..!!
퀘스트 리스트를 따로 만들기 위해 QuestManager.cs에 모아서 저장해두었다.
적어도 Quest.cs는 깔끔해 보이지 않을까^_^..
그러고 Init해서 게임 시작시에 불러와지도록 했다.
제목, 설명, 보상 등 항목이 여러개니까 저렇게 정리하는게 맞는거 같기도 하고 ,,
언젠가 퀘스트 120개를 만들어야 된다고 하면 그 때도 저 방식이 최선인가 싶기도 하고,, 🤨
연구가 필요해보인다.
2. 퀘스트 선택하기
string input = Console.ReadLine(); if (input == "1") {// 퀘스트 1 실행} else if (input == "2") {// 퀘스트 2 실행} else { Console.WriteLine("잘못된 입력입니다."); }
그동안 사용해왔던 방식은 대체로 이런식이었다.
직관적이고 편하기에 굳이 다른 방법을 사용하지 않았는데 위에서 말했듯이 퀘스트 120개가 된다면...?
그 때도 else if 120개를 만들 수 있을지,, 라는 고민에 반복문을 사용해 정리하면 될 것 같다는 생각이 들었다!int selection = 0; while (true) { Console.Write("원하시는 퀘스트 번호를 입력해주세요.\n>> "); string input = Console.ReadLine(); if (int.TryParse(input, out selection) && selection >= 1 && selection <= GameManager.Instance.questManager.questList.Count) { break; } Console.WriteLine("\n잘못된 입력입니다. 다시 입력해주세요.\n"); }
그래서 이번엔 while문과 Tryparse를 활용해 코드를 만들어봤다.
이렇게 하면 항목마다 작성해줘야 하는 단순 if문과는 다르게 GameManager에 호출해둔 퀘스트리스트를
입력값에 따라 불러올 수 있게 된다.
퀘스트 만들어보고 싶어서 도전한건데 생각보다 머리가 아파서 후회했다가 ^0^,,
그래도 완성하고 싶어서 붙잡고 늘어지니 어설프게라도 뭔가 만들어진 것 같긴하다,,.
수정이 많겠지만.. 그래도.. 계속 만들어봐야겠다.