static void Main(string[] args)
{
MonsterFactory level1Factory = new MonsterFactory();
level1Factory.upLevel = 0;
level1Factory.rate = 1;
for (int i = 0; i < 3; i++)
{
Monster monster = level1Factory.Create("슬라임");
Console.WriteLine($"몬스터 생성 : {monster.name} , 레벨 : {monster.level}");
}
Monster monster1 = level1Factory.Create("슬라임");
Monster monster2 = level1Factory.Create("슬라임");
Monster monster3 = level1Factory.Create("슬라임");
Monster monster4 = level1Factory.Create("고블린", 5);
Monster monster5 = level1Factory.Create("고블린");
Monster bossMonster = level1Factory.Create("오크족장");
Monster subMonster1 = level1Factory.Create("고블린");
Monster subMonster2 = level1Factory.Create("고블린");
MonsterFactory level2Factory = new MonsterFactory();
level2Factory.upLevel = 5;
level2Factory.rate = 1.1f;
Monster level2monster1 = level2Factory.Create("슬라임");
Monster level2monster2 = level2Factory.Create("슬라임");
MonsterFactory level3Factory = new MonsterFactory();
level3Factory.upLevel = 10;
level3Factory.rate = 1.2f;
}
}
public class MonsterFactory
{
public int upLevel;
public float rate;
public Monster Create(string name)
{
Monster monster;
switch (name)
{
case "슬라임":
return new Monster("슬라임", 1 + upLevel, 100);
case "고블린":
return new Monster("고블린", 3 + upLevel, 200);
case "오크":
return new Monster("오크", 5 + upLevel, 500);
case "오크족장":
return new Monster("오크족장", 10 + upLevel, 2000);
default:
return null;
}
monster.hp = (int)(monster.hp * rate);
return monster;
}
public Monster Create(string name, int level)
{
Monster monster = Create(name);
monster.level = level;
return monster;
}