카테고리 없음

[TIL] Text RPG (Team Project) 3

선조미 2025. 4. 24. 20:45

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^,, 
그래도 완성하고 싶어서 붙잡고 늘어지니 어설프게라도 뭔가 만들어진 것 같긴하다,,.

수정이 많겠지만.. 그래도.. 계속 만들어봐야겠다.