using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
class App
{
public App()
{
Carrier carrier = new Carrier();
Console.WriteLine();
carrier.Att();
Console.WriteLine();
carrier.BuildInterceptor();
carrier.BuildInterceptor();
Console.WriteLine();
carrier.Att();
Console.WriteLine();
carrier.BuildInterceptor();
carrier.BuildInterceptor();
carrier.BuildInterceptor();
Console.WriteLine();
carrier.BuildInterceptor();
carrier.BuildInterceptor();
carrier.BuildInterceptor();
Console.WriteLine();
carrier.Att();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
class Carrier
{
public int countInterceptor;
public Interceptor interceptor1;
public Interceptor interceptor2;
public Interceptor interceptor3;
public Interceptor interceptor4;
public Interceptor interceptor5;
public Carrier()
{
Console.WriteLine("캐리어가 생성되었습니다.");
}
public Interceptor BuildInterceptor()
{
countInterceptor++;
Interceptor recentInterceptor;
if (countInterceptor == 1)
{
Interceptor interceptor1 = new Interceptor("인터셉터1", 5);
recentInterceptor = interceptor1;
this.interceptor1 = interceptor1;
}
else if (countInterceptor == 2)
{
Interceptor interceptor2 = new Interceptor("인터셉터2", 5);
recentInterceptor = interceptor2;
this.interceptor2 = interceptor2;
}
else if (countInterceptor == 3)
{
Interceptor interceptor3 = new Interceptor("인터셉터3", 5);
recentInterceptor = interceptor3;
this.interceptor3 = interceptor3;
}
else if (countInterceptor == 4)
{
Interceptor interceptor4 = new Interceptor("인터셉터4", 5);
recentInterceptor = interceptor4;
this.interceptor4 = interceptor4;
}
else if (countInterceptor == 5)
{
Interceptor interceptor5 = new Interceptor("인터셉터5", 5);
recentInterceptor = interceptor5;
this.interceptor5 = interceptor5;
}
else
{
Console.WriteLine("인터셉터를 더이상 생산할 수 없습니다.");
recentInterceptor = null;
countInterceptor = 5;
}
return recentInterceptor;
}
public void Att()
{
if (countInterceptor == 0)
{
Console.WriteLine("인터셉터가 모자랍니다.");
}
else if (countInterceptor == 1)
{
this.interceptor1.Att();
}
else if (countInterceptor == 2)
{
this.interceptor1.Att();
this.interceptor2.Att();
}
else if (countInterceptor == 3)
{
this.interceptor1.Att();
this.interceptor2.Att();
this.interceptor3.Att();
}
else if (countInterceptor == 4)
{
this.interceptor1.Att();
this.interceptor2.Att();
this.interceptor3.Att();
this.interceptor4.Att();
}
else if (countInterceptor == 5)
{
this.interceptor1.Att();
this.interceptor2.Att();
this.interceptor3.Att();
this.interceptor4.Att();
this.interceptor5.Att();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
class Interceptor
{
string name;
int dmg;
public Interceptor(string name, int dmg)
{
this.name = name;
this.dmg = dmg;
Console.WriteLine("{0}가 생산되었습니다.", this.name);
}
public void Att()
{
Console.WriteLine("{0}이 공격({1})하였습니다.", this.name, this.dmg);
}
}
캐리어의 지역변수로 생성된 인터셉터 클래스의 인스턴스를 활용할 수 없었는데(메서드가 종료되었을 때 지역변수가 사라지기 때문에) 전부 인터셉터 타입의 멤버변수에 대입하여 값을 저장하고 그 값을 통해서 원하는 기능을 구현할 수 있었다.(아직 코드가 너무 조잡합)
'C# > 문제 해결' 카테고리의 다른 글
오브젝트풀링으로 인한 코루틴 강제 종료관련 문제 해결 (0) | 2023.05.05 |
---|---|
Unity) [유니티 2D] Rigidbody2D를 활용한 조작 문제 (0) | 2023.03.06 |
Unity) [유니티 2D] 애니메이션 연동 (2) | 2023.03.04 |
Unity) [유니티 UI] 스크린좌표를 통한 캐릭터, UI 이동 (0) | 2023.02.20 |
SpaceShooter 게임 구현 (0) | 2023.02.02 |