ÆÄÀÌÅÍ ¿¹Á¦´Â ¾ÆÁÖ Âª°í ±¸Á¶°¡ °£´ÜÇÏÁö¸¸ ½´ÆÃ °ÔÀÓÀÇ ÀüÇüÀûÀÎ Á¦ÀÛ ¹æ¹ýÀ» ¸ðµ¨ÈÇØ¼ Àß º¸¿©ÁÖ°í ÀÖ´Ù. È·ÁÇÑ ±×·¡ÇȰú ¿õÀåÇÑ »ç¿îµå¸¦ ÀÚ¶ûÇÏ´Â °ÔÀӵ鵵 ¹°Ã¼µéÀ» ¿òÁ÷ÀÌ°í ¹°Ã¼³¢¸® »óÈ£ÀÛ¿ëÇÏ´Â ¹æ¹ýÀº ÀÌ ¿¹Á¦¿Í Å©°Ô Ʋ¸®Áö ¾Ê´Ù. ÀÌ ¿¹Á¦¸¦ ÀÌÇØÇß´Ù¸é ÀÌÁ¦ °³ÀÛÀ» ÇØ º¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ÀÇ °úÁ¤À» µû¶ó °³ÀÛÇØ º¸µÇ ¸ÕÀú ½Ãµµ¸¦ ÇØ º¸°í Àß ¾ÈµÇ´Â ºÎºÐ¸¸ º»¹®ÀÇ Äڵ带 º¸±â ¹Ù¶õ´Ù.
Àû±ºÀÌ ÃѾ˿¡ ¸Â¾ÒÀ» ¶§ »ÐÇÏ°í »ç¶óÁ® ¹ö¸®¹Ç·Î Çö½Ç°¨ÀÌ º°·Î ¾ø´Ù. ÀûÀÌ
Á×Àº ¸ð¾çÀ» º¸¿©ÁÖ°í Àá½Ã³ª¸¶ Àû±ºÀÇ ½Ãü¸¦ ȸ鿡 Ç¥½ÃÇÏ¸é °ÔÀÓÀÌ ´õ Àç¹ÌÀÖ¾îÁú °Í °°´Ù. Àû±ºÀÌ ¾Æ±º ÃѾ˰ú Ãæµ¹ÇÒ ¶§ Àû±ºÀ» ¹Ù·Î »èÁ¦ÇÏÁö
¸»°í ¾ó¸¶°£ ȸ鿡 ³²¾Æ ÀÖµµ·Ï ÇÏ¸é µÈ´Ù. Ãæµ¹ ó¸® ·çƾÀÇ Äڵ带 ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.
for (i=0;i<MAXENEMY;i++) {
if (Enemy[i].exist==FALSE || Enemy[i].Type==-1) continue;
if (Enemy[i].y==by && abs(Enemy[i].x-bx) <= 2) {
gotoxy(bx,by);putch(' ');
bx=-1;
// Enemy[i].exist=FALSE;
Enemy[i].Type=-1;
gotoxy(Enemy[i].x-3,Enemy[i].y);
puts(" .,:,. ");
Score+=7-Enemy[i].nFrame;
Enemy[i].nFrame=Enemy[i].nStay=50;
break;
}
}
Àû±º°ú ÃѾËÀÌ Ãæµ¹ÇÒ ¶§ Àû±ºÀÇ TypeÀ» ƯÀ̰ªÀÎ -1·Î º¯°æÇÑ´Ù. TypeÀº Àû±ºÀÇ ¸ð¾ç°ªÀ» ±â¾ïÇϴµ¥ -1Àº ÀÌ Àû±ºÀÌ ÃѾ˿¡ ¸Â¾Æ »ç¸ÁÇߴٴ ǥ½ÄÀÌ´Ù. Á×Àº ¸ð¾çÀ» ÀÏÁ¤ ½Ã°£µ¿¾È º¸¿©ÁÖ¾î¾ß ÇϹǷΠnFrameÀº 50À¸·Î º¯°æÇÏ¿© 0.5Ãʰ£ º¸À̵µ·Ï Çß´Ù. ´Ü, Àû±ºÀÇ ¼Óµµ°¡ Á¡¼ö·Î »ç¿ëµÇ¹Ç·Î ÀÌ Á¶ÀÛ¹®Àº Á¡¼ö °è»ê¹®º¸´Ù µÚ¿¡ ÀÖ¾î¾ß ÇÑ´Ù. Ãæµ¹ ÆÇÁ¤ ·çƾ¿¡¼ Á×Àº Àû±º¿¡ ´ëÇØ¼´Â ´õ ÀÌ»ó Ãæµ¹ ÆÇÁ¤À» ÇÏÁö ¾Êµµ·Ï Çϱâ À§ÇØ TypeÀÌ -1ÀÎ Àû±º¿¡ ´ëÇØ¼´Â ´õ ÀÌ»ó Ãæµ¹ ÆÇÁ¤À» ÇÏÁö ¾Êµµ·Ï Á¶°Ç¹®À» ¼öÁ¤Çß´Ù.
Ãæµ¹ ó¸® ·çƾ¿¡¼´Â Type °ª°ú ÇÁ·¹ÀÓ ¼ö¸¸ ¹Ù²Ù¾úÀ» »Ó exist´Â ¾ÆÁ÷ TRUE°ªÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î ÀÌ Àû±ºÀº µ¹¾Æ°¡½Ã±â´Â ÇßÁö¸¸ ¾ÆÁ÷ ¸Þ¸ð¸®¿¡¼´Â À¯È¿ÇÑ ¹°Ã¼·Î Á¸ÀçÇÑ´Ù. ±×·¡¼ Àû±º À̵¿ ·çƾ¿¡¼´Â ÀÌ Àû±º¿¡ ´ëÇØ °è¼Ó 󸮸¦ ÇØ¾ß Çϴµ¥ ´ÙÀ½ Äڵ带 Ãß°¡ÇÏÀÚ.
for (i=0;i<MAXENEMY;i++) {
if (Enemy[i].exist==FALSE) continue;
if (--Enemy[i].nStay == 0) {
if (Enemy[i].Type == -1) {
gotoxy(Enemy[i].x-3,Enemy[i].y);
puts(" ");
Enemy[i].exist=FALSE;
continue;
}
Enemy[i].nStay=Enemy[i].nFrame;
Á¸ÀçÇÏ´Â Àû±º¿¡ ´ëÇØ TypeÀÌ -1ÀÎ Àû±ºÀº »èÁ¦ ó¸®ÇÑ´Ù. Áï, Ãæµ¹ ó¸® ·çƾ¿¡¼´Â ½Ãü¸¦ »ì¦ ±×·Á ³õ°í 0.5ÃÊ ÈÄ¿¡ ÀÌ ½Ãü¸¦ »èÁ¦Çϵµ·Ï ±â·Ï¸¸ ÇØ µÎ´Â °ÍÀÌ´Ù. »ç¿ëÀÚµéÀº À̵¿ ó¸® ·çƾ¿¡¼ ÀÌ ½Ãü¸¦ Áö¿ö »èÁ¦Çϱâ Àü±îÁö ªÀº ½Ã°£µ¿¾È Àû±ºÀÇ ÃÖÈĸ¦ ¸¸³£ÇÒ ¼ö ÀÖ´Ù.
¾Æ±ºÀÌ ÃѾËÀ» ÇÑ ¹ß¸¸ ¹ß»çÇÒ ¼ö ÀÖ¾î ºü¸£°Ô ¿òÁ÷ÀÌ´Â Àû±ºÀ» ¸ÂÃß±â ¾î·Æ°í
¹ÚÁø°¨ÀÌ ¶³¾îÁö´Âµ¥ ¿©·¯ ¹ß ¹ß»çÇÒ ¼ö ÀÖµµ·Ï ÇØ º¸ÀÚ. Àü¿ªº¯¼öÀÎ bx, by¸¦ Á¦°ÅÇÏ°í ¼Ò½º¿¡¼ ÀÌ º¯¼öµéÀ» ÂüÁ¶ÇÏ´Â ¸ðµç °÷À» ¼öÁ¤ÇÑ´Ù.
¿©·¯ ¹ßÀÇ ÃѾËÀ» °ü¸®Çϱâ À§Çؼ´Â ¹è¿ÀÌ ÇÊ¿äÇÏ´Ù. ´Ù¸¥ °´Ã¼Ã³·³ ÃѾËÀ» °ü¸®ÇÏ´Â ¹è¿À» ¼±¾ðÇÑ´Ù.
#define MAXBULLET 2
struct tag_Bullet
{
BOOL exist;
int x,y;
} Bullet[MAXBULLET];
ÀÌ·¸°Ô Çϸé ÃÖ´ë 2¹ßÀ» µ¿½Ã¿¡ ¹ß»çÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÃѾËÀº ¹«Á¶°Ç ÇÑ ÇÁ·¹ÀÓ¿¡ ÇÑ ¹ø¾¿ ÃÖ´ë ¼Óµµ·Î ¿òÁ÷À̵µ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ¼Óµµ¸¦ Á¶Á¤ÇÏ´Â nFrame°ú nStay´Â ÀÏ´Ü »¯´Ù. ¹°·Ð ÇÊ¿äÇÒ °æ¿ì ³ÖÀ» ¼öµµ ÀÖ´Ù. ÃѾËÀ» »ý¼ºÇÏ´Â ºÎºÐÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.
if (kbhit()) {
....
case ' ':
// »õ·Î¿î ÃÑ¾Ë »ý¼º
for (i=0;i<MAXBULLET && Bullet[i].exist==TRUE;i++) {;}
if (i != MAXBULLET) {
Bullet[i].x=fx;
Bullet[i].y=23;
Bullet[i].exist=TRUE;
}
break;
ºó ÀÚ¸®¸¦ ã¾Æ »õ·Î »ý¼ºµÇ´Â ÃѾËÀÇ Á¤º¸¸¦ ±â·ÏÇÑ´Ù. ÃѾËÀ» À̵¿½ÃŰ´Â ·çƾÀ» ´ÙÀ½°ú °°ÀÌ ¿ÏÀüÈ÷ ´Ù½Ã ÀÛ¼ºÇÑ´Ù.
for (i=0;i<MAXBULLET;i++) {
if (Bullet[i].exist) {
gotoxy(Bullet[i].x,Bullet[i].y);putch(' ');
if (Bullet[i].y == 0) {
Bullet[i].exist=FALSE;
} else {
Bullet[i].y--;
gotoxy(Bullet[i].x,Bullet[i].y);putch('i');
}
}
}
¹è¿À» µ¹¸ç Á¸ÀçÇÏ´Â ÃѾËÀ» ÇÑľ¿ À§·Î À̵¿½ÃÄ×´Ù. Ãæµ¹ ÆÇÁ¤ ·çƾÀº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.
for (i=0;i<MAXENEMY;i++) {
if (Enemy[i].exist==FALSE || Enemy[i].Type==-1) continue;
for (j=0;j<MAXBULLET;j++) {
if (Bullet[j].exist==FALSE) continue;
if (Enemy[i].y==Bullet[j].y && abs(Enemy[i].x-Bullet[j].x) <= 2) {
gotoxy(Bullet[j].x,Bullet[j].y);putch(' ');
Bullet[j].exist=FALSE;
Enemy[i].Type=-1;
Enemy[i].nFrame=Enemy[i].nStay=20;
gotoxy(Enemy[i].x-3,Enemy[i].y);
puts(" .,:,. ");
Score+=7-Enemy[i].nFrame;
break;
}
}
}
º¹¼ö °³ÀÇ Àû°ú º¹¼ö °³ÀÇ ÃѾ˿¡ ´ëÇÑ Ãæµ¹ ÆÇÁ¤À» ÇØ¾ß ÇϹǷΠÀÌÁß ·çÇÁ¸¦ ±¸¼ºÇß´Ù. ½ÇÇàÇØ º¸¸é ¿©·¯ °³ÀÇ ÃѾËÀÌ µ¿½Ã¿¡ ¹ß»çµÉ °ÍÀÌ´Ù. ÃѾËÀÇ °³¼ö¸¦ ´Ù¼¸ °³ Á¤µµ·Î ´Ã¸®¸é µû¹ßÃÑÀ» ½ò ¼öµµ ÀÖ´Ù. ÃѾËÀÌ ¿©·¯ °³ÀÎ °æ¿ì´Â Á¶±Ý ´À¸®´õ¶óµµ »ó°ü¾øÀ¸¹Ç·Î ¼Óµµ¸¦ Á¶±Ý Á¶Á¤Çϵµ·Ï ÇÏÀÚ. ¼Óµµ¸¦ Á¶Á¤ÇÏ·Á¸é ÃÑ¾Ë À̵¿ ·çƾ¿¡ ´ÙÀ½ ÇÑ ÁÙÀ» ³Ö¾î ÁÖ¸é µÈ´Ù. ±×¸®°í ÃѾËÀÇ ¸ð¾çÀ» Á¶±Ý ÅÁ÷ÇÏ°Ô ¹Ù²ã º¸ÀÚ.
#define MAXBULLET 5
....
for (i=0;i<MAXBULLET;i++) {
if (Bullet[i].exist) {
if (count % 3) break;
gotoxy(Bullet[i].x,Bullet[i].y);putch(' ');
if (Bullet[i].y == 0) {
Bullet[i].exist=FALSE;
} else {
Bullet[i].y--;
gotoxy(Bullet[i].x,Bullet[i].y);putch('@');
}
}
}
´Ù¼¸ ¹ßÀ» ÇÑ ¹ø¿¡ ¹ß»çÇÒ ¼ö ÀÖ°í ÃѾËÀÌ Ä¿Áø °Í ó·³ º¸¿© ÈξÀ ´õ ¹ÚÁø°¨ÀÖ´Â °ÔÀÓÀ» Áñ±æ ¼ö ÀÖ´Ù. ÃѾËÀÇ ¼Óµµ¿Í °³¼ö¸¦ ÀûÀýÇÑ ¼öÁØÀ¸·Î Á¶Á¤ÇØ¾ß Çϴµ¥ ÀÌ °ÔÀÓÀº Å×½ºÆ® ¿¹Á¦À̹ǷΠÁ» ½±°Ô ¼³Á¤Çß´Ù.
Àû±º ÃѾ˿¡ ¾à°£ÀÇ Áö´ÉÀ» ºÎ¿©ÇØ º¸ÀÚ. Á÷¼±À¸·Î¸¸ ³»·Á ¿À¸é Àç¹Ì°¡ ¾ø´Ù.
ÃѾËÀÌ °¡±ÞÀûÀÌ¸é ¿ì¸®ÆíÂÊÀ¸·Î À̵¿Çϵµ·Ï ÇÑ´Ù.
for (i=0;i<MAXBALL;i++) {
if (Ball[i].exist==FALSE) continue;
if (--Ball[i].nStay == 0) {
Ball[i].nStay=Ball[i].nFrame;
gotoxy(Ball[i].x,Ball[i].y);putch(' ');
if (Ball[i].y >= 23) {
Ball[i].exist=FALSE;
} else {
if (random(5)) {
if (Ball[i].x < fx) {
Ball[i].x++;
} else {
Ball[i].x--;
}
}
Ball[i].y++;
gotoxy(Ball[i].x,Ball[i].y);putch('*');
}
}
}
1/5ÀÇ È®·ü·Î ÃѾËÀÇ xÁÂÇ¥¸¦ fxÂÊÀ¸·Î À̵¿½ÃŰ¸é µÈ´Ù. Á» ´õ ¾î·Æ°Ô ¸¸µé·Á¸é °¡²û ÆÄÀÌÅÍÀÇ ¹Ý´ë ¹æÇâÀ¸·Îµµ ¿òÁ÷À̵µ·Ï ÇÏ¿© ÃѾËÀÌ SÀÚ·Î ºÒ±ÔÄ¢ À̵¿Çϵµ·Ï ÇÒ ¼öµµ ÀÖ´Ù. È®·ü°ªÀº °ÔÀÓÀÇ ³À̵µ¸¦ Á¶Á¤ÇÏ´Â ¼ö´ÜÀÌ µÈ´Ù.
°ÔÀÓÀº Àç¹ÌÀִµ¥ Á×¾úÀ» ¶§ Ç×»ó ´Ù½Ã ½ÃÀÛÇØ¾ß ÇϹǷΠºÒÆíÇÏ´Ù. Esc¸¦
´·¯ ¸í½ÃÀûÀ¸·Î Á¾·áÇÒ ¶§±îÁö °ÔÀÓÀ» Áñ±æ ¼ö ÀÖµµ·Ï ÇØ º¸ÀÚ. Àüü¸¦ ¹«ÇÑ ·çÇÁ·Î ÀÛ¼ºÇÏ¸é µÈ´Ù. ·çÇÁÀÇ ¼±µÎ´Â ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.
randomize();
setcursortype(NOCURSOR);
while (TRUE) {
clrscr();
fx=40;
Score=0;
for (i=0;i<MAXENEMY;i++) Enemy[i].exist=FALSE;
for (i=0;i<MAXBALL;i++) Ball[i].exist=FALSE;
for (i=0;i<MAXBULLET;i++) Bullet[i].exist=FALSE;
for (count=0;;count++) {
ÆÄÀÌÅÍ Çϳª°¡ »õ·Î »ý¼ºµÉ ¶§¸¶´Ù ÇØ¾ß ÇÒ ÀϵéÀ» ÃʱâÈÇÏ°í ¸ðµç °´Ã¼µéÀ» Áö¿î ÈÄ for ·çÇÁ ¾ÈÀ¸·Î µé¾î°£´Ù. ³¼ö ¹ß»ý±â¸¦ ÃʱâÈÇÏ´Â µ¿ÀÛ°ú Ä¿¼¸¦ ¼û±â´Â 󸮴 ÇÁ·Î±×·¥ ½ÃÀ۽ÿ¡ ÇÑ ¹ø¸¸ ÇÏ¸é µÇ¹Ç·Î ·çÇÁ¾È¿¡ µé¾î¿Ã Çʿ䰡 ¾ø´Ù. while (TRUE) ¹«ÇÑ ·çÇÁ¸¦ °¨½ÕÀ¸¹Ç·Î ÀÌ ·çÇÁ´Â ¾ðÁ¦±îÁö°í ¹Ýº¹µÉ °ÍÀÌ´Ù.
Àû±º ÃѾ˰ú ÆÄÀÌÅͰ¡ Ãæµ¹ÇÒ ¶§ ÇÁ·Î±×·¥À» ³¡³»´Â °ÍÀÌ ¾Æ´Ï¶ó while ·çÇÁÀÇ Ã³À½À¸·Î °¥ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ´ë±â ½Ã°£ 2ÃÊ´Â ³Ê¹« ±æ¹Ç·Î 0.5ÃÊ Á¤µµ¸¸ ±â´Ù¸®µµ·Ï Çß´Ù.
if (Ball[i].y==23 && abs(Ball[i].x-fx) <= 2) {
gotoxy(fx-3,21);puts(" . ");
gotoxy(fx-3,22);puts(" . . .");
gotoxy(fx-3,23);puts("..:V:..");
delay(500);
goto die;
·çÇÁÀÇ ³¡Àº ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
die:
{;}
}
end:
setcursortype(NORMALCURSOR);
}
die ·¹ÀÌºí¿¡´Â ºó ¸í·É¸¸ µÎ¾î while (TRUE) ·çÇÁ·Î µ¹¾Æ°¡µµ·Ï ÇÑ´Ù. ÆÄÀÌÅÍÀÇ °³¼ö¸¦ 3°³ Á¤µµ·Î Á¦ÇÑÇÏ·Á¸é while (TRUE) ¹«ÇÑ ·çÇÁ ´ë½Å for ·çÇÁ·Î ÆÄÀÌÅÍ ¼ö¸¸Å ·çÇÁ¸¦ µ¹¸®¸é µÈ´Ù. ÀÌ ¿Ü¿¡ Àû±º°ú ÆÄÀÌÅÍÀÇ Ä³¸¯Å͸¸ Á¶±Ý ¿¹»Ú°Ô µðÀÚÀÎÇØµµ ÇÁ·Î±×·¥À» Á¶±Ý Æû³ª°Ô ¹Ù²ãº¼ ¼ö ÀÖ´Ù. ¹°·Ð ±×·¡ÇÈ È¯°æ¿¡ ºñÇÒ ¹Ù´Â ¾Æ´ÏÁö¸¸ ¸»ÀÌ´Ù. Â÷ÈÄ ±×·¡ÇÈ È¯°æ¿¡¼ ÀÌ °ÔÀÓÀ» ´Ù½Ã ¸¸µç´Ù¸é ºñÆ®¸ÊÀ¸·Î ¿¹»Ú°Ô ¸¸µé¾î º¸°í »ç¿îµåµµ ³Ö¾î º¸µµ·Ï ÇÏÀÚ.