14-1-³ª.°³ÀÛ

ÆÄÀÌÅÍ ¿¹Á¦´Â ¾ÆÁÖ Âª°í ±¸Á¶°¡ °£´ÜÇÏÁö¸¸ ½´ÆÃ °ÔÀÓÀÇ ÀüÇüÀûÀÎ Á¦ÀÛ ¹æ¹ýÀ» ¸ðµ¨È­Çؼ­ Àß º¸¿©ÁÖ°í ÀÖ´Ù. È­·ÁÇÑ ±×·¡ÇȰú ¿õÀåÇÑ »ç¿îµå¸¦ ÀÚ¶ûÇÏ´Â °ÔÀӵ鵵 ¹°Ã¼µéÀ» ¿òÁ÷ÀÌ°í ¹°Ã¼³¢¸® »óÈ£ÀÛ¿ëÇÏ´Â ¹æ¹ýÀº ÀÌ ¿¹Á¦¿Í Å©°Ô Ʋ¸®Áö ¾Ê´Ù. ÀÌ ¿¹Á¦¸¦ ÀÌÇØÇß´Ù¸é ÀÌÁ¦ °³ÀÛÀ» ÇØ º¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ÀÇ °úÁ¤À» µû¶ó °³ÀÛÇØ º¸µÇ ¸ÕÀú ½Ãµµ¸¦ ÇØ º¸°í Àß ¾ÈµÇ´Â ºÎºÐ¸¸ º»¹®ÀÇ Äڵ带 º¸±â ¹Ù¶õ´Ù.

 

 Àû±ºÀÌ ÃѾ˿¡ ¸Â¾ÒÀ» ¶§ »ÐÇÏ°í »ç¶óÁ® ¹ö¸®¹Ç·Î Çö½Ç°¨ÀÌ º°·Î ¾ø´Ù. ÀûÀÌ Á×Àº ¸ð¾çÀ» º¸¿©ÁÖ°í Àá½Ã³ª¸¶ Àû±ºÀÇ ½Ãü¸¦ È­¸é¿¡ Ç¥½ÃÇÏ¸é °ÔÀÓÀÌ ´õ Àç¹ÌÀÖ¾îÁú °Í °°´Ù. Àû±ºÀÌ ¾Æ±º ÃѾ˰ú Ãæµ¹ÇÒ ¶§ Àû±ºÀ» ¹Ù·Î »èÁ¦ÇÏÁö ¸»°í ¾ó¸¶°£ È­¸é¿¡ ³²¾Æ ÀÖµµ·Ï ÇÏ¸é µÈ´Ù. Ãæµ¹ ó¸® ·çƾÀÇ Äڵ带 ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

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 ·çÇÁ·Î ÆÄÀÌÅÍ ¼ö¸¸Å­ ·çÇÁ¸¦ µ¹¸®¸é µÈ´Ù. ÀÌ ¿Ü¿¡ Àû±º°ú ÆÄÀÌÅÍÀÇ Ä³¸¯Å͸¸ Á¶±Ý ¿¹»Ú°Ô µðÀÚÀÎÇØµµ ÇÁ·Î±×·¥À» Á¶±Ý Æû³ª°Ô ¹Ù²ãº¼ ¼ö ÀÖ´Ù. ¹°·Ð ±×·¡ÇÈ È¯°æ¿¡ ºñÇÒ ¹Ù´Â ¾Æ´ÏÁö¸¸ ¸»ÀÌ´Ù. Â÷ÈÄ ±×·¡ÇÈ È¯°æ¿¡¼­ ÀÌ °ÔÀÓÀ» ´Ù½Ã ¸¸µç´Ù¸é ºñÆ®¸ÊÀ¸·Î ¿¹»Ú°Ô ¸¸µé¾î º¸°í »ç¿îµåµµ ³Ö¾î º¸µµ·Ï ÇÏÀÚ.