🧠 오늘의 핵심 정리
- 본캠프 14일차: 배치고사 진행 (준비 0이었지만 8번 제외하고는 검색/AI 없이 풀었음)
- 최종 보스(미노타우르스) 퀘스트 추가 + 전투 처치 시 진행도 연동
- 퀘스트 보상 아이템에 RewardPrice(가격) 필드 추가 → 인벤/저장 연결 이슈도 같이 정리
- 블랙잭 입력 UX 개선: Y/N 대소문자 허용, A(1/11) 입력 예외 처리, 골드 0일 때 무한 루프 방지
- 팀원 PC에서만 뜨는 오류 발생 → 수정 후 정상화 (수명 깎이는 그 느낌…)
📝 배치고사
오늘은 배치고사! …근데 역시 준비는 1도 안 했다.
그냥 베이직 반 들어가서 평화롭게(?) 공부하면 되지~ 라는 마음으로 봤는데, 생각보다 문제 자체는 크게 어렵진 않았던 것 같다.
특히 8번 문제 빼고는 인터넷 검색/AI 없이 풀었다는 점에서… 나름 선방(?)했다고 생각하기로 했다.
👾 최종 보스 퀘스트 추가 + 전투 처치 연동
오늘은 “최종 몬스터가 추가됐다”는 소식을 듣고, 바로 최종 보스를 잡는 퀘스트를 추가했다.
퀘스트는 Quest 목록(정적 데이터)에 하나 더 추가하고, 전투에서 몬스터 처치 시 AcceptedQuests를 순회해서 카운트가 오르도록 연결했다.
Quest.cs - 최종 보스 퀘스트 추가
new Quest("최종 보스 해치우기",
"이봐, 모험가!\n마을 근처에 **미노타우로스**가 나타났는데, 주민들이 무섭다고 난리야.\n" +
"경비병들도 엄두도 못 내니, 자네가 가서 저 놈 좀 처치해주게!\n빨리 해치우고 와!",
"'미노타우로스' 해치우기", 1,
"차원 파괴자", 1, 99999999, 999, 999, 1000)
PlayerBattle.cs - 처치 시 퀘스트 진행도 증가
foreach (var acceptedQuests in PlayerRef.AcceptedQuests)
{
if (acceptedQuests.Name == "최종 보스 해치우기"
&& acceptedQuests.Count < acceptedQuests.Total)
{
if (m.Name == "미노타우르스" && !m.IsCounted)
{
acceptedQuests.Count++;
}
}
}
이렇게 하면 보스 처치 시 퀘스트가 바로 완료되는 흐름이 만들어졌다. (보스는 1회 카운트면 충분!)
🎁 퀘스트 보상 아이템 가격(RewardPrice) 필드 추가
퀘스트 보상을 지급할 때, 아이템에 “가격” 정보도 필요해져서 RewardPrice를 Quest에 추가했다.
그리고 보상 지급 시 Item 생성자에도 가격을 넘겨주도록 수정!
Quest.cs - RewardPrice 추가 + 보상 지급 수정
public int RewardPrice { get; set; } // 보상 가격
// 보상 받기
player.Inventory.AddItem(
new Item(quest.RewardName, quest.RewardCount, 0,
quest.RewardAttack, quest.RewardDefense, quest.RewardPrice)
);
어제/오늘 겪은 저장/보상 오류도 결국 플레이어-인벤 연결 구조가 바뀌면서 생긴 문제였고, 최종적으로는 player.Inventory 기준으로 정리되면서 안정화됐다.
🃏 블랙잭 입력 예외 처리 + 골드 0 무한 루프 방지
블랙잭은 기능 자체는 돌아가는데, “사용자 입력” 쪽에서 사소한 함정들이 있었다.
- Y/N 입력을 대소문자 모두 허용 (y/n도 인정)
- A(1 또는 11 선택) 입력에서 숫자 아닌 입력/다른 값 들어오면 다시 입력
- Gold가 0인데 블랙잭 선택하면 영원히 갇히던 문제 수정
BlackJack.cs - A 입력 TryParse로 방어
int num;
while (true)
{
Console.Write("(A) 1과 11 중 선택하세요.(1 or 11): ");
string a = Console.ReadLine();
if (int.TryParse(a, out num) && (num == 1 || num == 11))
break;
Console.WriteLine("잘못된 입력입니다.");
}
card.playerSum += num;
BlackJack.cs - Y/N 대소문자 허용
string input = Console.ReadLine();
if (input.Equals("Y", StringComparison.OrdinalIgnoreCase)) { ... }
else if (input.Equals("N", StringComparison.OrdinalIgnoreCase)) { ... }
BlackJack.cs - 골드 0이면 게임 진입 막기
public bool Choose(Character player)
{
...
if (num == 2)
{
if (player.Gold <= 0)
{
Console.Clear();
Console.WriteLine($"Gold를 가져와라 플레이어 소지금 : {player.Gold}");
continue;
}
Console.Clear();
return true;
}
}
입력 처리만 탄탄해져도 체감 완성도가 확 올라가는 느낌! (이게 은근 중요)
🧩 레벨업 퀘스트 진행도 처리 방식 수정
처음에는 Status.LevelUp() 안에서 “레벨업 시 카운트++”로 처리했는데, 나중에 생각해보니 레벨업이 여러 번/로드/중간 상태에서 꼬일 가능성이 있었다.
그래서 퀘스트 상세 화면을 볼 때 현재 레벨을 기반으로 진행도를 계산하도록 바꿨다.
Quest.cs - 레벨 기반 진행도 보정
if (quest.Name == "더욱 더 강해지기!")
{
quest.Count = Math.Max(0, player.Level - 1);
}
이 방식의 장점은 세이브/로드나 레벨이 이미 올라간 상태에서도 진행도가 자연스럽게 맞춰진다는 것!
🧨 오늘의 이슈: 내 PC에선 안 뜨고 팀원 PC에서만 뜨는 오류
오늘 제일 스트레스 받았던 건 이거…
내 컴퓨터에선 정상인데 다른 팀원 컴퓨터에서만 오류가 뜨는 상황이 생겼다.
원인을 바로 특정하기가 너무 어렵고, “왜 나한테는 안 뜨지?” 상태라 진짜 멘탈이 갈렸다…
그래도 코드 조금 손보니까 정상화돼서 다행. 근데 이럴 때마다 수명이 깎이는 기분이다. 😇
📌 오늘의 회고
배치고사는 준비를 안 해서 긴장도 안 했는데(?) 막상 풀어보니 생각보다 할 만했다.
프로젝트가 슬슬 막바지로 가는 게 느껴져서, 와이어프레임을 최종으로 정리했다.
그리고 인벤토리 연결 구조가 바뀌면서 저장/보상 기능이 한 번씩 터졌는데, 결국 원인을 잡고 해결하니까 기분은 좋았다. (역시 해결이 주는 쾌감…)
다만 팀원 PC에서만 터지는 오류는… 진짜… 매번… 수명 깎인다!!!
🔜 내일 할 일
- 퀘스트 완료/보상/저장 흐름 전체 테스트 (팀원 PC 포함)
- 와이어프레임 기준으로 UI/메뉴 출력 정리 (막바지 마무리)
'내일배움캠프 본캠프' 카테고리의 다른 글
| [내일배움캠프 16일차 TIL] 팀 프로젝트 발표 (0) | 2025.10.21 |
|---|---|
| [내일배움캠프 15일차 TIL] 팀발표 하루전 (0) | 2025.10.20 |
| [내일배움캠프 13일 TIL] 저장·퀘스트·블랙잭… 기능은 늘고 멘탈은 갈리고 (0) | 2025.10.16 |
| [내일배움캠프 12일차 TIL] 퀘스트 제작 (0) | 2025.10.15 |
| [내일배움캠프 11일차 TIL] 깃허브 데스크탑 (0) | 2025.10.14 |