
C# 집중 교육주 2주차에 들어서며 팀 프로젝트를 하게 되었다. 기능 구현 목록을 리스트로 보면서 와이어 프레임을 짜고 구현에 들어가게 되었고, 나는 전투 기초 구현을 맡게 되었다.


전투의 기본 흐름은 위와 같은데 일단 던전을 제외하고 기초 공사를 해보기로 했다. 적들은 클래스로 동적 생성을 해야하고, 리스트로 관리를 할 계획을 짜봤다.
서로 다른 적이 동일한 체력과 상태를 가지는 문제를 발견했다. 클래스가 참조형이란 사실을 잊고 생성자에서 만든 후 리스트에 랜덤으로 추가했던 게 문제였다.
public BattleMenu()
{
enemies[0] = new("토끼", 0, 1, 10, 5);
enemies[1] = new("늑대", 1, 1, 30, 50);
currentEnemy = new();
random = new Random();
}
for (int i = 1; i <= enemyCount; i++)
{
// 어떤 적을 등장시킬 지
int id = random.Next(0, 2);
enemies[id].PrintCurrentEnemies();
currentEnemy.Add(enemies[id]);
currentEnemy.Add(currentEnemy);
currentEnemy[i].PrintCurrentEnemies();
리스트에 들어간 객체들은 결국 동일한 클래스를 바라보고 있었고, 이를 해결하기 위해 적을 동적 생성하는 메커니즘으로 수정중에 있다.
int enemyCount = random.Next(1, 5); //(1, 5)
for (int i = 0; i < enemyCount; i++)
{
// 어떤 적을 등장시킬 지
int id = random.Next(0, 2);
switch (id)
{
case 0:
Rabbit rab = new Rabbit();
currentEnemy.Add(rab);
break;
case 1:
rab = new Rabbit();
currentEnemy.Add(rab);
break;
}
currentEnemy[i].PrintCurrentEnemies();
}