🧠 오늘의 핵심 정리
- TRPG 프로젝트에 퀘스트 시스템(WIP) 추가
- Quest 목록(정적 데이터) + 캐릭터의 수락 퀘스트(런타임 데이터)로 분리
- 퀘스트 UI(목록/상세/수락/완료/보상) 흐름을 콘솔 메뉴로 구현
- 장비 장착 시 퀘스트 진행도 증가, 보상으로 아이템/골드 지급까지 연결
🧩 Quest.cs 작성 (WIP)
오늘은 코딩할 게 좀 많았습니다. 역시 아무 일도 안 하는 것보단 뭐라도 코딩하는 게 기분이 더 좋다는 걸 다시 느낌… (진짜루)
Quest.cs를 새로 만들고, 퀘스트 기본 구조 + 콘솔 메뉴까지 만들었습니다. 우선 퀘스트는 정적 목록(Quest.Quests)에 두고, 플레이어는 수락한 퀘스트를 따로 들고 있게 구성했습니다.
퀘스트 데이터 구조 + 정적 퀘스트 목록
public class Quest
{
public string Name { get; set; }
public string Description { get; set; }
public string MiniDescription { get; set; }
public int Count { get; set; } // 진행도
public int Total { get; set; } // 목표치
public string RewardName { get; set; }
public int RewardCount { get; set; }
public int RewardGold { get; set; }
public int RewardAttack { get; set; }
public int RewardDefense { get; set; }
public bool Accepted { get; set; } // 수락 여부
public bool IsCompleted { get; set; } // 완료 여부
public Quest() { }
public Quest(string name, string desc, string miniDesc, int total,
string rewardName, int rewardCount, int rewardGold,
int rewardAttack, int rewardDefense)
{
Name = name;
Description = desc;
MiniDescription = miniDesc;
Count = 0;
Total = total;
RewardName = rewardName;
RewardCount = rewardCount;
RewardGold = rewardGold;
RewardAttack = rewardAttack;
RewardDefense = rewardDefense;
IsCompleted = false;
Accepted = false;
}
public static Quest[] Quests = new Quest[]
{
new Quest("마을을 위협하는 미니언 처치",
"이봐! 마을 근처에 미니언들이 너무 많아졌다고 생각하지 않나?\n" +
"마을주민들의 안전을 위해서라도 저것들 수를 좀 줄여야 한다고!\n" +
"모험가인 자네가 좀 처치해주게!",
"미니언 5마리 처치", 5, "쓸만한 방패", 1, 5, 5, 5),
new Quest("장비를 장착해보자",
"인벤토리에서 장비를 장착해보자!!",
"장비 장착", 1, "날카로운 단검", 1, 3, 4, 4),
new Quest("더욱 더 강해지기!",
"레벨업을 하시오.",
"레벨 업", 1, "가죽 장갑", 1, 5, 3, 3)
};
}
이렇게 해두면 퀘스트 “설계도”는 한 곳에서 관리되고, 플레이어는 필요한 것만 수락해서 진행하게 만들 수 있어서 구조가 깔끔해지는 느낌이었습니다.
🧭 퀘스트 메뉴 흐름 연결 (Intro.cs)
로비 메뉴에 ④ 퀘스트를 추가해서 퀘스트 화면으로 들어갈 수 있게 연결했습니다.
// Intro.cs (StartScene 메뉴 일부)
Console.WriteLine(" [④ 퀘 스 트 ]");
// ...
case "4":
Console.WriteLine("퀘스트를 선택했습니다.");
System.Threading.Thread.Sleep(1000);
Console.Clear();
quest.ShowQuest(player, inventoryItem);
break;
📌 수락한 퀘스트 관리 (Status.cs)
Character에 수락한 퀘스트 리스트를 만들고, 수락 시 AddQuest로 넣도록 했습니다.
public class Character
{
public List<Quest> AcceptedQuests { get; set; } = new List<Quest>(); // 수락한 퀘스트들
public void AddQuest(Quest quest) // 퀘스트 추가
{
if (!AcceptedQuests.Contains(quest))
{
AcceptedQuests.Add(quest);
}
}
public void AddGold(int gold)
{
Gold += gold;
}
}
“수락한 퀘스트만” 따로 보여주는 메뉴도 추가해서, 진행 중/완료한 퀘스트를 구분해서 볼 수 있게 만들었습니다.
퀘스트 목록 UI에 A/B 메뉴 추가
Console.WriteLine("\n0. 돌아가기");
Console.WriteLine("A. 수락한 퀘스트");
Console.WriteLine("B. 완료한 퀘스트");
if (input.Equals("A", StringComparison.OrdinalIgnoreCase))
{
ShowAcceptedQuests(player);
}
else if (input.Equals("B", StringComparison.OrdinalIgnoreCase))
{
ShowCompletedQuests(player);
}
⚔️ “장비 장착” 퀘스트 진행도 연동
전투 쪽은 팀원이 많이 만지고 있어서 제가 끼기 애매했는데, 대신 제가 할 수 있는 부분인 장비 장착 이벤트에 퀘스트 진행도를 연결했습니다. (전투 게임이니까 battle 쪽 손이 많이 가는 건 맞는 듯… ㅋㅋ)
public void EquipItem(Item item)
{
if (!EquippedItems.Contains(item))
{
foreach (var acceptedQuest in AcceptedQuests)
{
if (acceptedQuest.Name == "장비를 장착해보자"
&& acceptedQuest.Count < acceptedQuest.Total)
{
acceptedQuest.Count++;
}
}
EquippedItems.Add(item);
item.IsEquipped = true;
Console.WriteLine($"{item.Name} 장착!");
}
}
이렇게 해서 “장비 장착” 퀘스트는 최소한 진행도 증가 → 완료 흐름이 돌아가게 됐습니다.
🎁 보상 지급 연결 (아이템 + 골드)
보상은 처음에 아이템만 넣었다가… 골드 보상을 깜빡해서 다시 추가했습니다 (ㅎㅎ…). Inventory에 AddItem도 추가해서 퀘스트 보상 아이템을 넣을 수 있게 했고, 골드는 player.AddGold로 지급하도록 연결했습니다.
// Inventory.cs
public void AddItem(Item item)
{
items.Add(item);
}
// Quest.cs - 보상 받기 부분
inventory.AddItem(new Item(
quest.RewardName, quest.RewardCount, 0,
quest.RewardAttack, quest.RewardDefense));
player.AddGold(quest.RewardGold);
quest.IsCompleted = true;
이제 최소한 “완료 → 보상 받기 → 인벤/골드 반영”까지는 이어졌고, 다음은 전투/상태(Status.cs, Battle.cs) 쪽 진행도(미니언 처치, 레벨업 등)를 자연스럽게 연결해야 합니다.
📌 오늘의 회고
오늘은 퀘스트 만들면서 커밋을 자잘하게 많이 했는데, “너무 사소한 거에 커밋하는 거 안 좋은 습관인가?” 싶었다가도… 연습이니까!! 괜찮아!!! 라고 결론 냈습니다.
그리고 팀플은 역시… 다른 사람이 만지고 있는 cs를 내가 건들기가 애매해서 오늘 목표한 만큼 다 못 만들었습니다. (battle 쪽은 특히 손이 많이 가서 제가 낄 틈이 없네… 하기 전투 게임이니까 ㅋㅋㅋ)
그래도 퀘스트 UI/수락/완료/보상 흐름은 뼈대가 잡혀서 만족! 다음에는 진행도 트리거를 더 늘려서 “미니언 처치 / 레벨업”도 제대로 완성해보고 싶습니다.
🔜 내일 할 일
- 퀘스트 진행도 트리거 추가 (전투 처치 / 레벨업 이벤트 연동)
- 저장 기능(퀘스트 수락/완료 상태 포함) 방향 고민
- 오늘 만든 퀘스트 흐름 WIP 마무리
'내일배움캠프 본캠프' 카테고리의 다른 글
| [내일배움캠프 14일차 TIL] 배치고사 + 프로젝트 막바지 작업 (0) | 2025.10.17 |
|---|---|
| [내일배움캠프 13일 TIL] 저장·퀘스트·블랙잭… 기능은 늘고 멘탈은 갈리고 (0) | 2025.10.16 |
| [내일배움캠프 11일차 TIL] 깃허브 데스크탑 (0) | 2025.10.14 |
| [내일배움캠프 10일차 TIL] 자율 학습 (1) | 2025.10.13 |
| [내일배움캠프 추석 TIL] 추석인데 과제하는 중... (0) | 2025.10.09 |