class Ability
{
void virtual Activate()
{
}
}
class Fireballย : Ability // ๊ณต๊ฒฉ์คํฌ
{
void override Activate()
{
//์คํฌ๋ฐ๋
}
}
์ด๋ฐ์์ผ๋ก ๊ตฌํํ ์๋ง์ ์คํฌ๋ค์ค ํ๋๋ฅผ ๋ฌด๊ธฐ์ ํ๋์ฉ ๋ถ์ฌํ๊ณ ์ถ์์.
class Weapon
{
string name;
float damage;
Ability ability; // ์๊ธฐ์๋ค๊ฐ.
}
๊ทผ๋ฐ ๋ฏธ๋ฆฌ ์ ์ํด๋ Json์ย ํตํด์ย ๋ชจ๋ Weapon๊ฐ์ฒด๋ค์ ๊ฒ ์์์ย ์๋์ผ๋ก ์์ฑํ๊ฒ ๋ง๋ค์๋๋
๋น์ฐํ ๋ณ์๋ ์์์ ์๋์ผ๋ก ๋ค์ด๊ฐ๋๋ฐ ์๋ฅผ ์๋ก๋ค์ดย ability์ Fireball ํด๋์ค๋ฅผ ๋ด๋๋ฒ์ ๋ชจ๋ฅด๊ฒ ๋๋ผ๊ตฌ
๊ทธ๋์ ๋ฐ๋ก string abilityName; ์ ์ ์ํ๊ณ ํด๋น ๋ฌธ์์ด๋ก ๊ฐ์์ด๋ฆ์ย ability๋ฅผ ์์ฑํ๋ ค ํ๋๊ฑฐ.. ใ
ใ
์๋์ผ๋ก ํ์๋ฉดย ๋ชจ๋ weapon ๊ฐ์ฒด๊ฐย ์์ฑ๋ ํ์ ๊ฐ ๊ฐ์ฒด๋ง๋ค Staff.ability = new Fireball();
์ด๋ฐ์์ผ๋ก ํ๋ฉด ๋๊ธด ํ๊ฒ ๋ค. ํ๋๋ฐ, ์๊ฐ์ด ์ง๋๋ weapon ๊ฐ์ฒด๊ฐ ์๋ฐฑ๊ฐ๊ฐ ๋ชฉํ๋ผ ์ฌ๋งํ๋ฉด ์๋ํ๋ฅผ ํ๊ณ ์ถ์์
ํน์ ์ข์๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์ถ์ฒ์ข ํด์ฃผ์ญ์ผ..ย
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
ใ ใ ๋ง์
์ ์ฒด ๊ฐ์ฒด ํ๋ ์ปฌ๋ ์ ์ผ๋ก ๋ง๋ค์ด๋๊ณ , ๊น์๋ณต์ฌ๋ก ๋นผ์์ ์ฐ๊ณ ์์.
๊ทธ๋ฃน์ ๋ณ๋ฃจ ์๊ด์์.. ๊ทธ๋ฅ ์ ๋ถ ๊ทผ์ ๊ณต๊ฒฉ์คํฌ์ด๋ผ๋ ์ณ๋ ๋๋๋..
๊ทธ๋ฐ๊ฑฐ์ผ? void Activate()๋ก ์คํฌ๋ง๋ค ํ๋์ ๋ค๋ฅด๊ฒํ๊ณ ์ถ์ด์ ๊ทธ๋ฐ๊ฑด๋
๊ฐ์ํ ์์ผ์ ์๊ธฐํ๊ฑฐ๊ธด ํ๋ฐ ์ง์ง ์ ๊ฒ ๋ค์... ํด์ ๊ฒ์์ธ๋ฐ ํ๋ ์ด์ด๋ง๋ค ๋ฌด๊ธฐ๊ฐ ํ๋์ฉ ์๊ณ ๋ฌด๊ธฐ ๋ง๋ค ์คํฌ์ด ํ๋์ฉ ๋ฌ๋ ค์๊ณ .
๋ก์ง๋ ๋ค ์ง๋์ ์ฃผ๋ ๋ฐ๋ฏธ์ง๋ ๋ฒํ๋ฑ๋ฑ๋ ๋ค ์ ํด์ง์ํ๋ผ ์ฌ์ค์ ์คํฌ์ ์บ๋ฆญํฐ์ด๋,์ ๋๋ฉ์ด์ ,์ดํํธ์ฐ์ถ์ฉ์ธ๋ฐ ํด๋์ค๋ก ๋ง๋ค๋ฉด ๋๋ฌด ๊ฑฐ๋ํด์ง๋๊ฑด๊ฐ?
;;;๊ฑฐ๋ํด์ง๊ณ ๋ง๊ณ ๋ฅผ ๋ ๋์ ๊ฑ ์คํฌ ํด๋์ค ํ๋๋ก ํ๊ณ ๋ฐ์ดํฐ์ ๋ฐ๋ผ์ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ํด์ฃผ๋์์ผ๋ก ํ์ ๋ชจ์ ์ด๋ ์ด๋ฐ๊ฑฐ. ๋๊ฐ ๋๋ฌด ๋ณต์กํ๊ฒ ์๊ฐํด์ ์ซ ๋ฉ๋ฆฌ๊ฐ๋ฏ. ๊ฐ๋จํ๊ฒ ์๊ฐํด
๊ทผ๋ฐ ๊ตฌ์กฐ๊ฐ ์ด๊ฒ๋ง๋? Weapon : Ability ํ๊ณ ๊ทธ ์์ ์ค๋ฒ๋ผ์ด๋์์ firebollํจ์๋ฅผ ๊ตฌํํ๋๊ฒ ๋ง์ง์์? ์ค๋ฒ๋ผ์ด๋ ํ๋๊ฒ ๋ณด์ด๋ ๋ง๊ณ ์ก์ ์ด๋ ํ์ ํ์ ์ด๋ฉด ํ ์ด๋ธ์์ ๊ทธ๋ฅ ์ธํธํ์ผ๋ก ๋ฒํธ๋ง๊ฐ์ ธ์ค๊ณ ์คํฌํ ์ด๋ธ์์ ํด๋น ๋ฒํธ์ ์ก์ ๋ถ๋ฌ์ค๋ฉด ๋ ๊ฒ ๊ฐ์๋ฐ ๋จธ ์ง์ ์ํด๋ด์ ๋ ์ง์๋ ์ง๋ ๋ชจ๋ฅด๊ฒ์ด