½ºÅ¸Å©·¡ÇÁÆ®(StarCraft)¶ó´Â ½Ã¹Ä·¹ÀÌ¼Ç °ÔÀÓÀ» º¸¸é ¾ÆÁÖ ¸¹Àº À¯´ÖµéÀÌ µîÀåÇÑ´Ù. °©ÀÚ±â Æ¯Á¤ °ÔÀÓ ¾ê±â¸¦ ²¨³» ÀÌ °ÔÀÓÀ» ¸ð¸£´Â »ç¶÷µéÀº ´çȲ½º·¯¿ïÁöµµ ¸ð¸£°ÚÁö¸¸ ¹ÏÀ»¸¸ÇÑ Åë°è¿¡ ÀÇÇϸé ÀÌ Ã¥À» Àд »ç¶÷ÀÇ 96%´Â ½ºÅ¸Å©·¡ÇÁÆ®¸¦ ÇØ º» ÀûÀÌ ÀÖ°í ³ª¸ÓÁö 3.8%´Â ÇØ º¸Áö´Â ¾Ê¾Æµµ °ÔÀÓÀ» ¾Ë°í´Â ÀÖ´Ù°í ÇÏ´Ï ¿¹¸¦ µé¾îµµ ¹«³ÇÒ °Í °°´Ù. °ÔÀÓ¿¡ µîÀåÇÏ´Â À¯´ÖµéÀ» Ư¼ºº°·Î Ŭ·¡½ºÈÇÑ´Ù¸é ¾Æ¸¶ ´ÙÀ½°ú °°Àº °èÃþÀÌ ¸¸µé¾îÁú °ÍÀÌ´Ù. ½ÇÁ¦·Î´Â ´õ ¸¹Àº Áß°£ °èÃþÀÌ Á¸ÀçÇϰÚÁö¸¸ °£´ÜÇÏ°Ô °³³äÀûÀÎ °èÃþÀ» ¸¸µé¾î º¸ÀÚ.

¸ðµç À¯´ÖµéÀº Ư¡º°·Î ¶Ù¾î ´Ù´Ï´Â °Íµé, ³¯¾Æ´Ù´Ï´Â °Íµé, ¶¥¼ÓÀ¸·Î ¼ûÀ» ¼ö ÀÖ´Â °Íµé·Î ÀÏÂ÷ ºÐ·ùÇÒ ¼ö ÀÖ´Ù. Running Ŭ·¡½º¿¡ ¼ÓÇÑ ¸¶¸°°ú ÅÊÅ©´Â ¶¥ À§¸¦ ¾ÆÀå ¾ÆÀå °É¾î´Ù´Ï°í ³¯ ¼ö ¾ø´Ù´Â °øÅëÁ¡À» °¡Áö°í ÀÖÀ¸¸é¼ ¶ÇÇÑ ½ºÆÀÆÑ, ½ÃÁö ¸ðµå°°Àº °íÀ¯ÀÇ µ¿ÀÛÀ» °¡Áö±âµµ ÇÑ´Ù. ¹ÂÅ», ·¹À̽º, ij¸®¾î µîÀº ³¯¾Æ´Ù´Ñ´Ù´Â ¸é¿¡¼´Â °øÅëÀûÀ̹ǷΠFlyingÀ¸·ÎºÎÅÍ »ó¼ÓÀ» ¹ÞÀ¸¸ç ¸¶Âù°¡Áö·Î Ŭ·ÎÅ·, ¾²¸®Äí¼Ç, ÀÎÅͼÁÅÍ ¹ß»ç µîµî °¢°¢ÀÇ Æ¯¼ºµéÀ» Ãß°¡·Î °¡Áú °ÍÀÌ´Ù.
ÀÌ·± ¸ðµç À¯´ÖµéÀº °øÅëÀûÀ¸·Î ÁÂÇ¥¿Í ¿¡³ÊÁö »óŶó´Â ¼Ó¼ºÀ» °¡Áö¸ç À̵¿ÇÒ ¼ö ÀÖ°í(Move), °ø°Ýµµ Çϰí(Attack), ¿¡³ÊÁö°¡ ¶³¾îÁö¸é Áױ⵵(Die)ÇÑ´Ù. ÀÌ ¿Ü¿¡µµ ½º½º·Î¸¦ ±×¸®±âµµ ÇÏ°í »ç¶óÁö±âµµ ÇÏ¸ç °¡²û ¸»À» ÇÏ´Â °æ¿ìµµ ÀÖ¾î ´õ ¸¹Àº °øÅë ¼Ó¼ºÀ» ÃßÃâÇÒ ¼ö ÀÖ´Ù. ±×·¡¼ ¸ðµç À¯´ÖÀÇ °øµ¿ Á¶»óÀ¸·Î UnitŬ·¡½º¸¦ ·çÆ®·Î ¼±¾ðÇߴµ¥ ÀÌ Å¬·¡½º´Â ¾Æ¸¶µµ ´ÙÀ½°ú °°Àº ¸ð¾çÀ» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. ¸ðµç À¯´ÖÀÇ °¡Àå ±âº»ÀûÀÎ µ¿ÀÛÀ» ¼ø¼ö °¡»ó ÇÔ¼ö·Î Æ÷ÇÔÇϰí ÀÖ´Ù.
class Unit
{
protected:
int x,y;
int energy;
public:
virtual void Move(int x, int y)=0;
virtual void Attack(int x, int y)=0;
virtual void Die()=0;
};
Unit Ŭ·¡½º´Â ³Ê¹« ÀϹÝÀûÀÎ À¯´ÖÀ» Ç¥ÇöÇϱ⠶§¹®¿¡ ÀÌ Å¬·¡½ºÀÇ ÀνºÅϽº¸¦ ½ÇÁ¦·Î ¸¸µé ¼ö´Â ¾ø´Ù. Áï UnitÀº °ÔÀÓ À¯´ÖÀÌ µÇ±â À§ÇÑ ÃÖ¼ÒÇÑÀÇ ¿ä±¸ Á¶°Ç¸¸À» ¸í½ÃÇÏ´Â Ãß»ó Ŭ·¡½ºÀÌ´Ù. ¿©±â¿¡ ¾î¶² ½ÄÀ¸·Î À̵¿ÇÏ°í ¾î¶² ½ÄÀ¸·Î °ø°ÝÇÏ´ÂÁö Á» ´õ ±¸Ã¼ÀûÀΠƯ¼ºÀÌ Á¤ÀǵǾî¾ß °ÔÀÓ¿¡ µîÀåÇÏ´Â ½ÇÁ¦ À¯´ÖÀÌ µÉ ¼ö ÀÖ´Ù. ¸ðµç À¯´ÖÀº UnitÀ¸·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Æ¾ß Çϸç Unit¿¡ ¼±¾ðµÇ¾î ÀÖ´Â ¼ø¼ö °¡»ó ÇÔ¼ö¸¦ ÀÚ½ÅÀÇ Æ¯¼º¿¡ ¸Â°Ô ¹Ýµå½Ã ÀçÁ¤ÀÇÇØ¾ß ÇÑ´Ù. ±×·¡¾ß ±¸Ã¼ Ŭ·¡½º°¡ µÇ¾î °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù.
Unit Ŭ·¡½º¿Í ½ÇÁ¦ À¯´ÖµéÀÇ Áß°£ °èÃþÀÎ Running, Flying µîÀº ¶Ù¾î´Ù´Ï°í ³¯¾Æ´Ù´Ï´Â À¯´ÖÀÇ °øÅëÀûÀΠƯ¼ºÀ» Ç¥ÇöÇÒ »Ó ½ÇÁ¦·Î ±¸Ã¼ÀûÀÎ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö´Â ¾øÀ¸¹Ç·Î ¿ª½Ã Ãß»ó Ŭ·¡½ºÀÌ´Ù. ÀÌ Å¬·¡½ºµéÀº ¶Ç ³ª¸§´ë·ÎÀÇ ¼ø¼ö °¡»ó ÇÔ¼öµéÀ» ¼±¾ðÇϰí ÀÖÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î FlyingÀº À̵¿½Ã ¸ñÀûÁö±îÁö ¹Ù·Î ³¯¾Æ°¥ ¼ö ÀÖÁö¸¸ RunningÀº Àå¾Ö¹°À» ÇÇÇØ ÃÖ´Ü °Å¸®¸¦ ã¾Æ À̵¿ÇØ¾ß ÇϹǷΠFindShortestPath µûÀ§ÀÇ µ¿ÀÛÀ» ÇÊ¿ä·Î ÇÑ´Ù.
ÀÌ·± °èÃþ ±¸Á¶¿¡¼ ÃÖ»óÀ§ÀÇ ·çÆ® Ŭ·¡½ºÀÎ UnitÀº ½ÇÁ¦ °´Ã¼¸¦ ¸¸µéÁö´Â ¸øÇÏÁö¸¸ ¸ðµç À¯´ÖÀÇ ´ëÇ¥ ŸÀÔÀ¸·Î »ç¿ëµÈ´Ù. Unit * ŸÀÔÀÇ º¯¼ö¸¦ ¼±¾ðÇϸé ÀÌ º¯¼ö·Î Á¸ÀçÇÏ´Â ¸ðµç À¯´ÖÀ» ´Ù °¡¸®Å³ ¼ö ÀÖ´Ù. ½ºÅ¸Å©·¡ÇÁÆ®´Â ÇÑ ¹ø¿¡ 12°³ÀÇ À¯´ÖÀ» ¼±ÅÃÇÏ¿© µ¿½Ã¿¡ ¸í·ÉÀ» ³»¸± ¼ö Àִµ¥ À̶§ ¼±ÅÃµÈ À¯´ÖµéÀÇ ¸ñ·ÏÀº Unit *pSel[12] ¹è¿·Î °£´ÜÇÏ°Ô ±â¾ïÇÒ ¼ö ÀÖ´Ù. ÃÖ»óÀ§ ·çÆ® Ŭ·¡½º¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ Å¸ÀÔÀÌ¸é ¸ø °¡¸®Å³ À¯´ÖÀÌ ¾øÁö ¾ÊÀº°¡? 12°³°¡ ¼±ÅÃµÈ »óÅ¿¡¼ »ç¿ëÀÚ°¡ À̵¿ ¸í·ÉÀ» ³»·È´Ù¸é À̶§ ´ÙÀ½ ÄÚµå·Î ¼±ÅÃµÈ ¸ðµç À¯´Ö¿¡°Ô ¸í·ÉÀ» ³»¸± ¼ö ÀÖ´Ù.
for (i=0;i<12;i++) pSel[i]->Move(x,y);
°¢°¢ÀÇ À¯´ÖÀÌ ¸ñÇ¥ ÁöÁ¡±îÁö À̵¿ÇÏ´Â ¹æ½ÄÀº ¼·Î ´Ù¸£´Ù. Áú·µÀº µÚ¶× µÚ¶× °É¾î°¥ °ÍÀÌ°í ¹ÂÅ»Àº °¡·Î Áú·¯ ³¯¾Æ°¡°í ij¸®¾î´Â ¾ÆÁÖ ¿©À¯ ºÎ¸®¸é¼ õõÈ÷ ±â´Â µí ³¯¾Æ°£´Ù. ÇÏÁö¸¸ Move ÇÔ¼ö ÀÚü°¡ ´ÙÇüÀûÀ¸·Î µ¿ÀÛÇϱ⠶§¹®¿¡ ¼±ÅÃµÈ À¯´ÖÀÇ Á¾·ù¸¦ ÆÇ´ÜÇÒ ÇÊ¿ä¾øÀÌ Move¶ó´Â ÇÔ¼ö¸¸ È£ÃâÇÏ¸é ¼±Åà °´Ã¼ÀÇ ½ÇÁ¦ Move ÇÔ¼ö°¡ È£ÃâµÇ¾î Á¤ÀÇµÈ Æ¯¼º´ë·Î Á¤È®ÇÏ°Ô µ¿ÀÛÇÒ °ÍÀÌ´Ù. °ø°ÝÀ̳ª »ç¸Á 󸮵µ ¸¶Âù°¡Áö·Î ´ÙÇüÀûÀ¸·Î µ¿ÀÛÇÏ´Â °¡»ó ÇÔ¼öÀÌ¹Ç·Î ÇØ´ç À¯´ÖÀÇ Å¸ÀÔÀ» ÀÏÀÏÀÌ ±¸ºÐÇÒ ÇÊ¿ä¾øÀÌ °¡»ó ÇÔ¼ö¸¸ È£ÃâÇÏ¸é ¸ðµç 󸮴 µ¿ÀûÀ¸·Î °áÇյǴ °¡»ó ÇÔ¼ö°¡ ¾Ë¾Æ¼ ó¸®ÇÑ´Ù. ÇÙÆøÅºÀÌ ÅÍÁ³À» ¶§ÀÇ Ã³¸®´Â ´ÙÀ½ ·çÇÁ¸é µÈ´Ù.
for (pUnit=ù À¯´Ö ~ »ý¼ºµÈ ¸ðµç À¯´Ö±îÁö) {
if (pUnit->x, y ÁÂÇ¥°¡ ÇÙÆøÅº ¹üÀ§ ¾ÈÀ̸é) {
pUnit->Die();
}
}
»ý¼ºµÇ¾î ÀÖ´Â ¸ðµç À¯´ÖÀ» ¼øÈ¸ÇÏ¸é¼ ÁÂÇ¥¸¦ Á¡°ËÇÏ¿© ÇÙÆøÅº »çÁ¤ °Å¸®¾ÈÀ϶§ Die¸¸ È£ÃâÇÏ¸é ´Ùµé °¢ÀÚÀÇ ¹æ¹ýÀ¸·Î ¾Ë¾Æ¼ »ç¸ÁÇϽùǷΠ´õ ÀÌ»ó ½Å°æ¾µ °Ô ¾ø´Ù. °Ô´Ù°¡ ½ºÅ¸Å©·¡ÇÁÆ®°¡ È®ÀåµÇ¾î »õ·Î¿î À¯´ÖÀÌ Ãß°¡µÇ¾ú´Ù ÇÏ´õ¶óµµ Unit Ãß»ó Ŭ·¡½ºÀÇ ±âº» ¿ä°ÇÀ» ¹Ýµå½Ã ¸¸Á·ÇØ¾ß ÇϹǷΠ°ÔÀÓ ¿î¿µ ÄÚµå´Â Å©°Ô ¼öÁ¤ÇÒ ÇÊ¿ä¾øÀÌ ±×´ë·Î Àû¿ëµÇ´Â ÀÌÁ¡µµ ÀÖ´Ù.
½ÇÁ¦·Î ½ºÅ¸Å©·¡ÇÁÆ®¶ó´Â °ÔÀÓÀÌ C++·Î ¸¸µé¾îÁ³´ÂÁö, ´ÙÇü¼ºÀ» »ç¿ëÇÏ´ÂÁö´Â È®ÀÎÇØ º» ¹Ù ¾ø´Ù. ±×·¯³ª ºÐ¸íÇÑ °ÍÀº C++·Î ´ÙÇüÀûÀÎ Äڵ带 ÀÛ¼ºÇϸé ÀÌ·± °ÔÀÓÀ» ½±°Ô ¸¸µé°í °ü¸®ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ±×·¡ÇÈ È¯°æÀ̶ó¸é ±×·²½ÎÇÑ ¿¹Á¦¸¦ ÇÑ ¹ø ¸¸µé¾î º¼ ¼öµµ ÀÖ°ÚÁö¸¸ ÄÜ¼Ö È¯°æ¿¡¼ Z, M, C µûÀ§ÀÇ ¹®ÀÚ·Î À¯´ÖÀ» Ç¥ÇöÇϴµ¥´Â ÇѰ谡 ÀÖ¾î Áö±ÝÀº ÇÏÁö ¾Ê±â·Î ÇÑ´Ù. ´ÙÀ½¿¡ ¿©·¯ºÐµéÀÌ ±×·¡ÇÈ È¯°æÀ» ¹è¿ì°Ô µÇ¸é ¹Ì´Ï ½ºÅ¸Å©·¡ÇÁÆ®¸¦ ÇÑ ¹ø ¸¸µé¾î º¸±â ¹Ù¶õ´Ù.
¿©±â±îÁö C++ÀÇ °¡Àå ±âº»ÀûÀÎ ¹®¹ýµé¿¡ ´ëÇØ ¸ðµÎ ¿¬±¸ÇØ º¸¾Ò´Ù. ÀÌ ½ÃÁ¡¿¡¼ 25Àå¿¡ ÀÖ´Â OOPÀÇ Æ¯Â¡µéÀΠĸ½¶È, Ãß»óÈ, Á¤º¸ ÀºÆó, »ó¼Ó, ´ÙÇü¼ºÀÇ °³³äµéÀ» ´Ù½Ã ÇÑ ¹ø ÀÐ¾î º¸ÀÚ. óÀ½¿¡´Â ¹«½¼ ¸»ÀÎÁö µµÅë ÀÌÇØ°¡ °¡Áö ¾Ê¾Ò°ÚÁö¸¸ ÀÌÁ¦ ¾î·ÅDzÀ̳ª¸¶ ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù. °øºÎÇØ ºÁ¼ ¾Ë°ÚÁö¸¸ ªÀº Á¤ÀÇ·Î °£´ÜÇÏ°Ô ¼³¸íÇϱâ´Â Âü ¾î·Á¿î °³³äµéÀÌ´Ù.
¾ÆÁ÷µµ ÀÌÇØ°¡ Àß °¡Áö ¾Ê´Â´Ù¸é ¿¹Á¦¸¦ ÅëÇØ Á» ´õ ¿¬±¸ÇØ º¸°í ±×·° Àú·° ÀÌÇØ°¡ µÈ´Ù¸é C++À» Àß ¸ð¸£´Â Ä£±¸¸¦ ¾Õ¿¡ ¾ÉÇô ³õ°í ¼³¸íÀ» ÇØº¸ÀÚ. ±× Ä£±¸°¡ ¾Ë¾Æ µèµç °í°³¸¸ °¼¿ô°Å¸®°í ÀÖµç °´Ã¼ ÁöÇâÀ̶õ ¹Ù·Î ÀÌ·± °ÍÀÌ¾ß ¶ó´Â ¼³¸íÀ» ÀÚ½ÅÀÖ°Ô ÇÒ ¼ö ÀÖ´Ù¸é ÇöÀç ´Ü°è¿¡¼´Â ÃæºÐÇÏ´Ù. °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÌ È®½ÇÀÌ ¸ö¿¡ º£·Á¸é ¿ª½Ã Á» ´õ ¸¹Àº ½Ç½ÀÀÌ ÇÊ¿äÇÏ´Ù.