PC(Player Character)¿Í
NPC(Non-Player Character)¸¦ ±¸ºÐÇÏ´Â °¡Àå Å« ±âÁØÀº
»ç¿ëÀÚ¿¡ ÀÇÇØ Á¶ÀÛÀÌ °¡´ÉÇÑ Ä³¸¯ÅÍÀΰ¡ ÇÏ´Â °ÍÀÌ´Ù.
PC´Â ´ëºÎºÐ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¹Þ¾Æ ±×¿¡ ¸Â´Â ÇൿÀ»
ÇÏ°Ô µÇ¸ç NPC´Â ÀÚüÀûÀÎ ÆÇ´ÜÀ¸·Î ÇൿÇÑ´Ù. ÇÏÁö¸¸
±× ÀÌ¿ÜÀÇ Çൿ ¹æ½ÄÀº ¸ðµÎ °°¾Æ¾ß ÇÑ´Ù. ¡°¿À¸¥ÂÊÀ¸·Î
¿òÁ÷¿©¶ó¡±¶ó´Â ¸í·ÉÀ» ¹ÞÀ¸¸é PC³ª NPC³ª ¸ðµÎ ¿À¸¥ÂÊÀ¸·Î
¿òÁ÷¿©¾ß ÇÏ¸ç ¡°Àü¹æ¿¡ °ø°ÝÀ» Ç϶󡱶ó´Â ¸í·É¿¡
¶È°°ÀÌ ÇöÀç ÀåºñµÈ ¹«±â·Î °ø°ÝÇØ¾ß ÇÒ °ÍÀÌ´Ù. (¾î¶²
¹«±â¸¦ ¾î¶»°Ô »ç¿ëÇ϶ó°í ÇÏ´Â ¼¼ºÎ ¸í·ÉÀÌ ÇÊ¿ä ¾ø´Ù.)
Áï, ¸í·ÉÀº ÇϳªÀÌ°í ÀÌ·± ¸í·ÉÀ» ¹Þ´Â °´Ã¼´Â °¢°¢
´Ù¸¦ ¼ö°¡ ÀÖ´Ù´Â °ÍÀÌ´Ù.
±×·¸´Ù¸é ÇÁ·Î±×·¡¹ÖÀÇ ±¸Çö¿¡¼´Â
¾î¶»°Ô ÇØ¾ß Çϴ°¡? ¹æ¹ýÀº ¿©·¯ °¡Áö°¡ ÀÖ°ÚÁö¸¸
±× Áß¿¡ °¡Àå °£´ÜÇÑ ¹æ¹ýÀÌ NPCŬ·¡½º¸¦ »ó¼Ó ¹Þ¾Æ¼
PC¸¦ ±¸¼ºÇÏ°í, PCÀÇ ¸ÞÀÎ Çൿ ÇÔ¼ö¸¦ ÀçÁ¤ÀÇÇÏ´Â
°ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î´Â PC°¡ NPCÀÇ ¼Ó¼ºÀ» ¸ðµÎ Æ÷ÇÔÇϸç
°Å±â¿¡´Ù°¡ Ãß°¡ ¼Ó¼ºÀÌ ºÙµµ·Ï ±¸¼ºµÇ´Â °ÍÀÌ ´ëºÎºÐÀ̱â
¶§¹®ÀÌ´Ù.
1.
PC¿Í NPCÀÇ ±¸ºÐ
01:
// Ŭ·¡½º Á¤ÀÇ 02:
class CNonPlayerChar 03:
{ 04:
public: 05:
virtual
int DoAction(); 06:
}; 07:
08:
int CNonPlayerChar::DoAction() 09:
{ 10:
// AI¿¡
ÀÇÇØ Çൿ ÆÐÅÏ °áÁ¤ 11:
} 12:
13:
class CPlayerChar : public
CNonPlayerChar 14:
{ 15:
public: 16:
int
DoAction(); 17:
}; 18:
19:
int CPlayerChar::DoAction() 20:
{ 21:
// »ç¿ëÀÚÀÇ
ÀԷ¿¡ ÀÇÇØ Çൿ ÆÐÅÏ °áÁ¤ 22:
} 23:
24:
// °ÔÀÓ ½Ã½ºÅÛ¿¡ Á¤ÀǵÈ
ij¸¯ÅÍ ¸®½ºÆ® 25:
CNonPlayerChar* Characters[100]; 26:
27:
// PCÀÇ »ý¼º ¹æ¹ý 28:
Characters[0] = new CPlayerChar(); 29:
30:
// NPCÀÇ »ý¼º ¹æ¹ý 31:
Characters[1] = new CNonPlayerChar
(); 32:
33:
// ¸ÞÀÎ ·çÇÁ ¾È¿¡¼ ½ÇÇàµÇ´Â
Àü ij¸¯ÅÍ Çൿ ÇÔ¼ö 34:
for (int i = 99; i >=0;
i--) 35:
{ 36:
if (Characters[i]) 37:
{ 38:
Characters[i]->DoAction(); 39:
Characters[i]->Show(); 40:
} 41:
}
|
ÀÌ·¸°Ô Çϸé PC¿Í NPC¸¦ ±¸ºÐÇÏÁö
¾Ê°íµµ ÇϳªÀÇ ·çÇÁ¿¡¼ Àü ij¸¯ÅÍÀÇ Çൿ ÇÔ¼ö¸¦
¸ðµÎ ºÎ¸¦ ¼ö ÀÖ´Ù. Âü°í·Î ·çÇÁ¸¦ 99ºÎÅÍ 0±îÁö
°Å²Ù·Î µ¹¸®´Â °ÍÀº 0¹ø ij¸¯ÅÍÀÎ ÁÖÀΰøÀÌ °¡Àå
³ªÁß¿¡ Ãâ·ÂµÇ¾î ij¸¯Å͵é Áß¿¡¼´Â °¡Àå À§ÂÊ¿¡
ÂïÈ÷µµ·Ï Çϱâ À§Çؼ´Ù.
ÄÚµå ¸¶Áö¸·ÀÇ Ä³¸¯ÅÍ ¸ÞÀÎ
·çÇÁ´Â ºñ´Ü ·ÑÇ÷¹À× °ÔÀÓ»Ó¸¸ ¾Æ´Ï¶ó ½´Æà °ÔÀÓ¿¡¼µµ
»ç¿ëÇÒ ¼ö ÀÖ´Ù. ÁÖÀΰø ij¸¯ÅÍ, Àû ij¸¯ÅÍ, ±×¸®°í
źȯ °°Àº ±âŸ ¿ÀºêÁ§Æ®µé±îÁöµµ ¸ðµÎ ÇϳªÀÇ
°´Ã¼·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ°Ô µÇ¸é À§ÀÇ ±¸Á¶¸¦ ±×´ë·Î
°¡Á®°¡¼ ¾µ ¼ö ÀÖ´Ù. ¹°·Ð ½´Æÿ¡¼´Â Ãæµ¹¿¡
ÀÇÇÑ ¼Ò¸êÀÌ ÀÖÀ¸¹Ç·Î DoAction() ¸â¹ö ÇÔ¼ö¿¡
ÀÚ½ÅÀÌ ¼Ò¸êµÇ´ÂÁö ¾Æ´ÑÁö¸¦ ¸®ÅÏ °ªÀ¸·Î Áà¾ß
ÇÒ °ÍÀÌ´Ù.
Áï ´ÙÀ½°ú °°Àº ±¸Á¶¸¦ °¡Áö´Â
°ÍÀÌ °¡Àå ¹Ù¶÷Á÷ÇÏ´Ù.
01:
// ¸ÞÀÎ ·çÇÁ ¾È¿¡¼ ½ÇÇàµÇ´Â
Àü ij¸¯ÅÍ Çൿ ÇÔ¼ö 02: for
(int i = MAX_CHARACTER; i >=0;
i--) 03: { 04:
if (Characters[i]) 05:
{ 06:
if
(Characters[i]->DoAction()) 07:
{ 08:
Characters[i]->Show(); 09:
} 10:
else 11:
{ 12:
delete
Characters[i]; 13: Characters[i]
= NULL; 14: } 15:
} 16:
}
|
¸â¹ö ÇÔ¼öÀÎ DoAction()¿¡¼
±× ij¸¯ÅÍÀÇ °íÀ¯ ÇൿÀ» ÇÏ°í Ãѵ¹ üũ µîÀ»
ÇÑ ÈÄ °´Ã¼ ¼Ò¸ê¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏ °ªÀ¸·Î ÁÖ°Ô
µÇ´Âµ¥, ¿©±â¼´Â TRUEÀÏ ¶§ °´Ã¼°¡ °è¼Ó À¯È¿ÇÔÀ»
³ªÅ¸³»°í FALSEÀÏ ¶§ °´Ã¼°¡ ¼Ò¸êÇØ¾ß ÇÔÀ» ³ªÅ¸³½´Ù.
µû¶ó¼ °´Ã¼°¡ °è¼Ó À¯ÁöµÇ°í ÀÖÀ» ¶§´Â ±× ij¸¯Å͸¦
ȸ鿡 Ãâ·ÂÇØ ÁÖ°í ±×·¸Áö ¾ÊÀ» ¶§´Â ¼Ò¸êÀÇ °úÁ¤À»
°ÅÄ£´Ù. (ºÎ°¡ÀûÀ¸·Î °´Ã¼ÀÇ ¼Ò¸êÀÚ¿¡¼ ¼Ò¸ê¿ë
¿ÀºêÁ§Æ®¸¦ Ãß°¡·Î »ý¼ºÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î
ÆÄÆí°ú °°Àº¡¦)
2. Çൿ
ÇÔ¼ö ¿À¹ö¶óÀ̵ù
Çൿ ÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵ù(overriding)ÇÏ´Â
¹æ¹ýÀº ¾ð¾î¿¡ µû¶ó¼ Á¶±ÝÀº ´Ù¸£´Ù. ¸¸¾à MS
Windows¿ë °ÔÀÓ¸¸À» ¸¸µç´Ù¸é C++ÀÇ ¹®¹ý Áß¿¡¼
°¡»ó(virtual) ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ ÀÌ°ÍÀ» ±¸ÇöÇϸé
µÇÁö¸¸, ¹Ì´Ï °ÔÀӱ⳪ ±âŸ C++ÀÇ Áö¿øÀÌ ¹ÌºñÇÑ
ÀÓº£µðµå ½Ã½ºÅÛ(Embedded system)¿¡¼ °ÔÀÓÀ»
¸¸µé ¶§´Â CÀÇ ¹®¹ýÀÎ ÇÔ¼öÇü º¯¼ö¸¦ ÅëÇØ ±¸ÇöÇؾß
ÇÏ´Â °æ¿ìµµ ÀÖ´Ù.
±× ´ÙÀ½ ºÎºÐÀº ´ÙÀ½ ÁÖ¿¡³ª
¾µ·Ã´Ù. ¿öµå ¹®¼ÀÇ Æ¯Á¤ Æ÷¸ËÀ¸·Î µÇ¾î
ÀÖ´Â °ÍÀ» htmlÀÇ ÀÌ Æ÷¸ËÀ» ¿Å±â´Â ÀÛ¾÷ÀÌ
³Ê¹« ³ë°¡´Ù´Ù.
|