벌써 2주차?
내가 맡은 도전 기능은 스테이지 기능 추가였다. 팀원들도 각자 도전기능을 맡아서 하는 중인데 하나가 돌아간다 싶으면 다른 곳에서 문제가 생기고...아무튼 다같이 고생중이다.
아 맞다 오늘 부트캠프 내에서 자체적으로 진행한 배치고사도 봤는데 생각보다 어렵진 않았다. 전부 코딩문제가 아니라 더 할만했다. 알고리즘 열심히 공부한 사람이면 10번 문제까지도 할 수 있을 것 같았지만 난 아니니까 못 풀었다. 알고리즘 어려워요!! 그나저나 이제 벌써 부트캠프를 시작한지 2주나 지났다. 뭔가 점점 TIL이 일기장이 되어가는 것 같다... 오늘의 TIL 시작합니다!
<기획>
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);
}
value.Lv가 파라미터 level과 같은 것만 필터링한다..Select(kv => kv.Key)은 필터링된 항목들에서 키만 콜라낸다.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는 내일 올려보도록 하겠다. 에이 설마 내일이 오늘보다 작업량이 많을까? (사실 어제가 훨씬 많았지만 더 지치는건 오늘이었다...) 아무튼 내일 마저 정리하도록 하겠다~!