2caed577b39c28a8699fe8b115ef046cdcc8



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 ๊ฐ์ฒด๊ฐ€ ์ˆ˜๋ฐฑ๊ฐœ๊ฐ€ ๋ชฉํ‘œ๋ผ ์›ฌ๋งŒํ•˜๋ฉด ์ž๋™ํ™”๋ฅผ ํ•˜๊ณ ์‹ถ์—ˆ์Œ



ํ˜น์‹œ ์ข‹์€๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์ถ”์ฒœ์ข€ ํ•ด์ฃผ์‹ญ์‡ผ..ย