내일배움캠프 14일차

박나연·2025년 4월 24일

내배캠

목록 보기
14/69

벌써 2주차?

오늘의 키워드 : 마무리까지 단 한발짝. 근데 이제 고난을 곁들인

내가 맡은 도전 기능은 스테이지 기능 추가였다. 팀원들도 각자 도전기능을 맡아서 하는 중인데 하나가 돌아간다 싶으면 다른 곳에서 문제가 생기고...아무튼 다같이 고생중이다.
아 맞다 오늘 부트캠프 내에서 자체적으로 진행한 배치고사도 봤는데 생각보다 어렵진 않았다. 전부 코딩문제가 아니라 더 할만했다. 알고리즘 열심히 공부한 사람이면 10번 문제까지도 할 수 있을 것 같았지만 난 아니니까 못 풀었다. 알고리즘 어려워요!! 그나저나 이제 벌써 부트캠프를 시작한지 2주나 지났다. 뭔가 점점 TIL이 일기장이 되어가는 것 같다... 오늘의 TIL 시작합니다!

Monster.cs

<기획>
1 스테이지 : 1, 2렙 몬스터만 / 1~4마리
2 스테이지 : 2, 3렙 몬스터만 / 1~4마리
3 스테이지 : 3, 4렙 몬스터만 / 1~4마리
4 스테이지 : 4, 5렙 몬스터만 / 1~4마리

원래는 모든 몬스터 중에서 랜덤으로 1~4마리를 출력하도록 하였는데 바뀐 기획에서는 스테이지 당 특정 몬스터들이 1~4마리 출력하도록 하였다.

        public static Monster CreateRandomByLevel(int level)
        {
            //레벨이 같은 MonsterType 키만 추리기
            var types = monsterPresets
                .Where(kv => kv.Value.Lv == level)
                .Select(kv => kv.Key)
                .ToArray();

            //그 중 하나를 랜덤 선택
            var chosen = types[random.Next(types.Length)];

            //기존 Create(type) 메서드 사용
            return Create(chosen);
        }
  • 몬스터 딕셔너리의 키(monstertype) 값(monsterstatement) 쌍 중에서 value.Lv가 파라미터 level과 같은 것만 필터링한다.
  • .Select(kv => kv.Key)은 필터링된 항목들에서 키만 콜라낸다.
  • 정수를 랜덤으로 뽑아 해당 인덱스의 monstertype을 chosen에 저장한다.
  • 기존에 있던 Create(MonsterType)메서드ㅡㄹ 통해 실제 Monster인스턴스를 생성, 초기화해서 반환한다.
        public static List<Monster> SpawnWave(
            int[] allowedLevels,
            int minCount,
            int maxCount)
        {
            var wave = new List<Monster>();
            int count = random.Next(minCount, maxCount + 1);

            for (int i = 0; i < count; i++)
            {
                int lvl = allowedLevels[random.Next(allowedLevels.Length)];
                wave.Add(CreateRandomByLevel(lvl));
            }

            return wave;
        }
  • 앞에서 만든 CreateRandomByLevel(lvl)로 레벨별 랜덤 생성 메서드를 호출해 동일 레벨대에서 다양하게 몬스터를 꺼낼 수 있도록 하였다.
  • 마지막으로 List<Monster>로 전투 루프에서 여러 몬스터 인스턴스를 처리할 수 있도록 하였다.

마무리하며

사실 제일 힘든 건 팀원들이 짠 코드와 맞물리게 돌아가게 하는 부분이었다. 전부 내가 짠 코드가 아니다보니 어디다 넣어야 하지... 여기인가? 안되네 그럼 어디지.. 이런 과정이 계속 있었다. 실무에서도 그럴려나? 그건 잘 모르겠다. 그리고 최신 버젼을 계속 테스트 해보면서 의도대로 동작하지 않는 부분을 찾고, 팀원들에게 계속 알려주니까 최고의 QA라면서 칭찬해줬다... 팀원들의 일만 늘어난게 아닌지 좀 걱정되지만? 우리 팀원들은 해낼 수 있다고 믿는다!!
StageManager.cs는 내일 올려보도록 하겠다. 에이 설마 내일이 오늘보다 작업량이 많을까? (사실 어제가 훨씬 많았지만 더 지치는건 오늘이었다...) 아무튼 내일 마저 정리하도록 하겠다~!

0개의 댓글