4-4-³ª.# ¿òÁ÷À̱â

´ÙÀ½ ¿¹Á¦´Â Ä¿¼­ À̵¿Å°·Î È­¸é Áß¾Ó¿¡ ÀÖ´Â #¹®ÀÚ¸¦ À̵¿½ÃŲ´Ù. »óÇÏÁ¿ì Ä¿¼­ À̵¿Å°¸¦ ´©¸£¸é #¹®ÀÚ°¡ À̵¿ÇÏ¸ç ½ºÆäÀ̽ºÅ°´Â È­¸éÀ» Áö¿ì°í Q¸¦ ´©¸£¸é ÇÁ·Î±×·¥ÀÌ Á¾·áµÈ´Ù. »ç¿ëÀÚ°¡ ŰÁ¶ÀÛÀ» ÅëÇØ Á÷Á¢ ÇÁ·Î±×·¥À» ¿òÁ÷¿© º¼ ¼ö ÀÖ´Â Àç¹ÌÀÖ´Â ¿¹Á¦ÀÌ´Ù.

 

¿¹ Á¦ : movesharp

#include <Turboc.h>

 

void main()

{

     int x,y;

     int ch;

 

     x=40;

     y=10;

     clrscr();

 

     for(;;) {

          gotoxy(x,y);

          putch('#');

          ch=getch();

          if (ch == 0xE0 || ch == 0) {

              ch=getch();

              switch (ch) {

              case 75:

                   x=x-1;

                   break;

              case 77:

                   x=x+1;

                   break;

              case 72:

                   y=y-1;

                   break;

              case 80:

                   y=y+1;

                   break;

              }

          } else {

              switch (ch) {

              case ' ':

                   clrscr();

                   break;

              case 'q':

              case 'Q':

                    exit(0);

              }

          }

     }

}

 

¿¹Á¦¸¦ ÀÔ·ÂÇÑ ÈÄ ½ÇÇàÇØ º¸ÀÚ. Ä¿¼­Å°¸¦ ´©¸£°í ÀÖÀ¸¸é ´©¸¥ ŰÀÇ ¹æÇâÀ¸·Î #¹®ÀÚ°¡ ¿òÁ÷ÀÏ °ÍÀÌ´Ù. ½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù.

¼¼ °³ÀÇ º¯¼ö¸¦ »ç¿ëÇϴµ¥ x, y´Â #ÀÇ ÇöÀç ÁÂÇ¥À̸ç (40,10)À¸·Î ÃʱâÈ­ÇßÀ¸¹Ç·Î ÃÖÃÊ #Àº È­¸éÀÇ Áß¾ÓÂë¿¡ Ãâ·ÂµÈ´Ù. ch´Â getch ÇÔ¼ö·Î ÀԷ¹ÞÀº Ű Äڵ尪À» °¡Áö´Âµ¥ ÀÌ °ª¿¡ µû¶ó #ÀÇ À̵¿ ¹æÇâÀÌ °áÁ¤µÈ´Ù. getch ÇÔ¼ö´Â A, B, 1, 2 °°Àº ¹®ÀÚ۰¡ ´­·¯Á³À» ¶§ ¹®ÀÚ¸¦ ¹Ù·Î µ¹·Á ÁÖÁö¸¸ Ä¿¼­ À̵¿Å°³ª Æã¼Ç۰°ÀÌ ¹®ÀÚ°¡ ÇÒ´çµÇÁö ¾ÊÀº È®ÀåŰ¿¡ ´ëÇØ¼­´Â 0xE0 ¶Ç´Â 0ÀÇ Æ¯À̰ªÀ» ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖ´Ù. ÀÌ ¶§´Â getch¸¦ ÇÑ ¹ø ´õ È£ÃâÇØ¾ß È®ÀåŰÀÇ Äڵ带 ±¸ÇÒ ¼ö ÀÖ´Ù. 0xE0, 0Áß ¾î¶² ƯÀ̰ªÀÌ ¸®ÅϵǴ°¡´Â Ű¿¡ µû¶ó ´Ù¸¥µ¥ ±»ÀÌ ±¸ºÐÇÒ ÇÊ¿ä¾øÀÌ µÑ Áß Çϳª°¡ ¸®ÅϵǸé getch¸¦ ÇÑ ¹ø ´õ È£ÃâÇÏ¿© È®Àå۰ªÀ» ¾òÀ¸¸é µÈ´Ù.

getch°¡ ¸®ÅÏÇÏ´Â 0xE0°ªÀº ÀϹÝÀûÀÎ ¹®ÀÚ°¡ ¾Æ´Ñ È®Àå۶ó´Â ƯÀ̰ªÀε¥ ÀÌ °ªÀ» ch·Î ÀԷ¹ޱâ À§Çؼ­ ch´Â ¹Ýµå½Ã intÇüÀ¸·Î ¼±¾ðÇØ¾ß ÇÑ´Ù. char ŸÀÔÀº 0xE0¶ó´Â °ªÀ» ÀúÀåÇÒ ¼ö ÀÖ´Â Å©±â¸¦ °¡ÁöÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. Ä¿¼­ À̵¿Å°´Â getch ÇÔ¼ö¸¦ µÎ ¹ø È£ÃâÇØ¼­ ÀԷ¹޴µ¥ À̶§ getch ÇÔ¼ö°¡ Àд Ŀ¼­ À̵¿Å°ÀÇ È®ÀåŰ ÄÚµå´Â ´ÙÀ½°ú °°´Ù. ch º¯¼ö¿¡ ÀúÀåµÈ ۰ªÀ» ÀÌ Å°ÄÚµåµé°ú ºñ±³ÇØ º¸¸é »ç¿ëÀÚ°¡ ¾î¶² ¹æÇâÀ¸·Î À̵¿ÇÏ°í ½ÍÀºÁö¸¦ ¾Ë ¼ö ÀÖ´Ù.

ÇÁ·Î±×·¥ Àüü´Â for ¹«ÇÑ·çÇÁ·Î ½Î¿©Á® ÀÖ¾î Q¸¦ ÀÔ·ÂÇÒ ¶§±îÁö °°Àº ·çƾÀ» °è¼Ó ¹Ýº¹ÇÑ´Ù. °¢ ·çÇÁ¿¡¼­ ÇöÀç À§Ä¡ (x, y)¿¡ #¹®ÀÚ¸¦ Ãâ·ÂÇϸç Ű ÀÔ·ÂÀ» ¹Þ¾Æ ÀÌ Å°°ª¿¡ µû¶ó x, y º¯¼öÀÇ ÁÂÇ¥¸¦ Á¶Á¤ÇÑ´Ù. ¿ÞÂÊ À̵¿Å°ÀÎ 75¸¦ ´©¸£¸é x¸¦ 1 °¨¼Ò½ÃÄÑ #À» ÇÑÄ­ ¿ÞÂÊÀ¸·Î À̵¿½ÃŰ¸ç ¾Æ·¡ÂÊ À̵¿Å°ÀÎ 80À» ´©¸£¸é y¸¦ 1Áõ°¡½ÃÄÑ #ÀÌ ¾Æ·¡ÂÊÀ¸·Î À̵¿Çϵµ·Ï ÇÑ´Ù. Ä¿¼­ À̵¿Å° ¿Ü¿¡ µÎ °³ÀÇ Å°¸¦ ´õ ó¸®Çϰí Àִµ¥ ½ºÆäÀ̽º ۸¦ ´©¸£¸é clrscr ÇÔ¼ö¸¦ È£ÃâÇÏ¿© È­¸éÀ» ±ò²ûÇÏ°Ô Áö¿ì¸ç Q Ű(¶Ç´Â qŰ)¸¦ ´©¸£¸é ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù.

ch¿¡ ÀԷ¹ÞÀº ۰ª¿¡ µû¶ó ¿©¼¸ °¡Áö ´Ù¸¥ 󸮸¦ °¢°¢ Çϰí ÀÖÀ¸¹Ç·Î ´ÙÁß ¼±Åù®ÀÎ switch¹®ÀÌ »ç¿ëµÇ¾ú´Ù. switch¹®Àº ÀԷ¹ÞÀº Ű °ª¿¡ µû¶ó ÁÂÇ¥¸¦ ¿Å±â°Å³ª È­¸éÀ» Áö¿ì°Å³ª ÇÁ·Î±×·¥À» Á¾·áÇÏ´Â ´ÙÁß ºÐ±â 󸮸¦ Çϸç ÀÌ Äڵ尡 for ¹«ÇÑ ·çÇÁ·Î µÑ·¯ ½Î¿© ÀÖÀ¸¹Ç·Î »ç¿ëÀÚ°¡ Q۸¦ ´©¸¦ ¶§±îÁö ¹«ÇÑÈ÷ ¹Ýº¹ÇÒ °ÍÀÌ´Ù.

Áö±Ý±îÁö ÀÛ¼ºÇß´ø ªÀº ¿¹Á¦µé¿¡ ºñÇØ ±æÀ̰¡ Á¶±Ý ±æ±â´Â ÇÏÁö¸¸ ±¸Á¶°¡ ´Ü¼øÇϱ⠶§¹®¿¡ ¾î·ÆÁö´Â ¾Ê´Ù. ÀÌ ¿¹Á¦¸¦ ¿ÏÀüÈ÷ ÀÌÇØÇÑ ÈÄ ´ÙÀ½ ½Ç½ÀÀ» ÇØ º¸ÀÚ. ÀÏÁ¾ÀÇ ÆÐÅÏ ¿¬½ÀÀÌ´Ù. ÀÌ Áß ¸î °¡Áö´Â ½º½º·Î Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ·± ¹®Á¦¸¦ °¡±ÞÀû ¸¹ÀÌ Ç®¾î ºÁ¾ß ÇÑ´Ù.

 

 Ä¿¼­ À̵¿Å°³ª °ø¹éŰ, Q°¡ ¾Æ´Ñ ۸¦ ´©¸£¸é À߸ø ´­·¶´Ù´Â Àǹ̷Π»à»à ¼Ò¸®¸¦ ³» º¸ÀÚ. È®Àå¿­ \a¸¦ Ãâ·ÂÇÏ¸é ½ºÇÇÄ¿·Î »à ¼Ò¸®°¡ ³­´Ù. switch ¹®ÀÇ case¿¡ ÁöÁ¤µÈ ¿©¼¸ °¡Áö ¿ÜÀÇ ´Ù¸¥ Ű¿¡ ´ëÇÑ Ã³¸®¸¦ default·Î ó¸®ÇÏ¸é µÈ´Ù. µÎ °³ÀÇ switch¹® ³¡¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÏÀÚ.

 

if (ch == 0xE0 || ch == 0) {

     ch=getch();

     switch (ch) {

     ....

    default:

        putch('\a');

        break;

     }

} else {

     switch (ch) {

     ....

    default:

        putch('\a');

        break;

     }

}

 

ch°¡ case¿¡ ¾ø´Â ۰ªÀ» °¡Áú °æ¿ì, ¿¹¸¦ µé¾î A³ª 3°°Àº ۸¦ ´©¸£¸é default case°¡ ¼±ÅÃµÇ¾î »à ¼Ò¸®¸¦ ³»¸ç Åõ´ú°Å¸± °ÍÀÌ´Ù. Á¦ÀÏ ³¡¿¡ ÀÖ´Â break¹®Àº µÚÂÊ¿¡ ´Ù¸¥ case°¡ ¾ø±â ¶§¹®¿¡ »ç½Ç ±»ÀÌ ÇÊ¿äÇÏÁö´Â ¾Ê´Ù. ±×·¯³ª Àϰü¼º°ú È®À强À» À§ÇØ ¸ðµç case¿¡ break¹®À» ³Ö´Â °ÍÀÌ ÁÁÀºµ¥ default ´ÙÀ½¿¡ ´Ù¸¥ case°¡ ÇÊ¿äÇØÁú ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ¿¹Á¦¿¡¼­ case 'Q'¿¡´Â break°¡ ¾ø´Âµ¥ ¿©±â¿¡µµ break¸¦ ³Ö´Â °ÍÀÌ ¿øÄ¢À̱â´Â ÇÏ´Ù. ±×·¯³ª exit ÇÔ¼ö´Â ÇÁ·Î±×·¥À» Áï½Ã Á¾·áÇÏ´Â ¿ö³« Ư¼öÇÑ ¸í·ÉÀ̶ó break¸¦ ³ÖÁö ¾Ê¾Ò´Ù.

 Ä¿¼­ À̵¿Å°¸¦ ´©¸§¿¡ µû¶ó x, y ÁÂÇ¥¸¦ Á¶Á¤ÇÔÀ¸·Î½á #¹®ÀÚ°¡ À̵¿Çϴµ¥ ÀÌ º¯¼öµéÀÇ °ªÀÌ ¹«Á¶°Ç Áõ°¡, °¨¼ÒÇϵµ·Ï µÇ¾î ÀÖ¾î ¿ÞÂÊ ³¡¿¡¼­ ´õ ¿ÞÂÊÀ¸·Î °¥ ¼ö ÀÖ°í ¾Æ·¡Âʺ¸´Ù ´õ ¹ØÀ¸·Î ³»·Á°¥ ¼öµµ ÀÖ´Ù. ÀÌ·¸°Ô µÇ¸é #ÀÌ È­¸é¿¡¼­ »ç¶óÁö´Â °æ¿ìµµ Àִµ¥ x, y ÁÂÇ¥°¡ È­¸éÀ» ¹þ¾î³ªÁö ¾Êµµ·Ï ÇØº¸ÀÚ.

È­¸éÀÇ ¿ÞÂÊ À§ ÁÂÇ¥´Â (0,0)ÀÌ°í ¿À¸¥ÂÊ ¾Æ·¡ ÁÂÇ¥´Â (79,24)À̹ǷΠx, yº¯¼ö°¡ ÀÌ ¿µ¿ªÀ» ¹þ¾î³ªÁö ¾Êµµ·Ï ÇÏ¸é µÈ´Ù. °¢ Ä¿¼­ À̵¿Å°¸¦ ó¸®ÇÏ´Â case¿¡ if Á¶°ÇÀ» ³Ö¾î ÇØ´ç ¹æÇâÀ¸·Î À̵¿ °¡´ÉÇÒ ¶§¸¸ x, y º¯¼ö°ªÀ» Á¶Á¤Çϵµ·Ï ÇÏÀÚ.

 

switch (ch) {

case 75:

     if (x > 0) x=x-1;

     break;

case 77:

     if (x < 79) x=x+1;

     break;

case 72:

     if (y > 0) y=y-1;

     break;

case 80:

     if (y < 24) y=y+1;

     break;

     ....

 

¿ÞÂÊÀ¸·Î À̵¿Çϱâ Àü¿¡ x°¡ 0º¸´Ù Å«Áö¸¦ Á¡°ËÇØ º¸°í 0º¸´Ù Å« °æ¿ì¿¡¸¸ x¸¦ 1 °¨¼Ò½ÃÄ×´Ù. ¸¸¾à x°¡ 0À̶ó¸é Áï ¿ÞÂÊ º®¿¡ ´ê¾Æ ÀÖ´Ù¸é x°ªÀ» ±×´ë·Î À¯ÁöÇÏ¿© #ÀÌ È­¸é ¿ÞÂÊ ¹ÛÀ¸·Î ³ª°¡Áö ¾Êµµ·Ï Çß´Ù. ³ª¸ÓÁö ¹æÇâµµ ºñ±³ÇÏ´Â °ª¸¸ ´Ù¸¦ »Ó ³í¸®´Â µ¿ÀÏÇÏ´Ù.

 À̹ø¿¡´Â È­¸é ¹ÛÀ» ¹þ¾î³ª¸é ¹Ý´ëÂÊ¿¡ # ¹®ÀÚ°¡ ³ªÅ¸³ªµµ·Ï ÇØ º¸ÀÚ. Áï, ¿ÞÂÊ ³¡¿¡¼­ ´õ ¿ÞÂÊÀ¸·Î °¡¸é ¿À¸¥ÂÊ ³¡¿¡ #ÀÌ ³ªÅ¸³ªµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. À̰͵µ Á¶°Ç¿¡ µû¶ó ÁÂÇ¥¸¸ Á¶ÀÛÇÏ¸é µÈ´Ù. ´ëÇ¥ÀûÀ¸·Î ¿ÞÂÊ À̵¿ÀÇ °æ¿ì¸¸ º¸ÀÚ.

 

switch (ch) {

case 75:

     if (x > 0) {

          x=x-1;

     } else {

          x=79;

     }

     break;

 

ÄÚµå ÀÚü°¡ ¼³¸íÀûÀ̹ǷΠ´õ ÀÌ»óÀÇ ÀܼҸ®´Â ºÒÇÊ¿äÇÒ °ÍÀÌ´Ù. 4¹æÇâ ¸ðµÎ ÀÌ·± Äڵ带 ÀÛ¼ºÇϸé #¹®ÀÚ°¡ È­¸é ³¡À» Áö³ª ¸¶À½´ë·Î À̵¿ÇÒ ¼ö ÀÖ´Ù.

 À̵¿ÇÏ´Â ¹®ÀÚ°¡ #À¸·Î °íÁ¤µÇ¾î Àִµ¥ »ç¿ëÀÚÀÇ ±âÈ£¿¡ µû¶ó ÀÌ ¹®ÀÚ¸¦ º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇØ º¸ÀÚ. 1À» ´©¸£¸é $, 2´Â @ , 3Àº #,  4´Â °ø¹éÀ¸·Î ¹®ÀÚ¸¦ º¯°æÇϵµ·Ï ÇÑ´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é putch('#')¹®¿¡ »ç¿ëµÈ '#' ¹®ÀÚ »ó¼ö¸¦ º¯¼ö·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù.

 

char munja='#';

 

for(;;) {

     gotoxy(x,y);

     putch(munja);

 

munja¶ó´Â À̸§À¸·Î ¹®ÀÚÇü º¯¼ö¸¦ ¼±¾ðÇϰí '#'À¸·Î ÃʱâÈ­ÇÑ ÈÄ putch ÇÔ¼ö·Î ÀÌ ¹®ÀÚ¸¦ Ãâ·ÂÇϵµ·Ï Çß´Ù. ¿©±â±îÁö´Â ¾ÕÀÇ ¿¹Á¦¿Í µ¿ÀÏÇÏÁö¸¸ putch°¡ Ãâ·ÂÇÏ´Â ´ë»óÀÌ ¹®ÀÚ »ó¼ö¿¡¼­ ¹®ÀÚ º¯¼ö·Î ¹Ù²î¾úÀ¸¹Ç·Î ÀÌ º¯¼ö°ª¸¸ ¹Ù²Ù¸é Ãâ·ÂµÇ´Â ¹®ÀÚ°¡ ´Þ¶óÁú °ÍÀÌ´Ù. ¹®ÀÚ¸¦ ó¸®ÇÏ´Â ¾Æ·¡ÂÊ switch ¹®¿¡ ´ÙÀ½ case¸¦ Ãß°¡ÇÑ´Ù.

 

} else {

     switch (ch) {

     case ' ':

          clrscr();

          break;

     case 'q':

     case 'Q':

          exit(0);

    case '1':

        munja='$';

        break;

    case '2':

        munja='@';

        break;

    case '3':

        munja='#';

        break;

    case '4':

        munja=' ';

        break;

     }

}

 

1, 2, 3, 4 ۸¦ ´©¸¦ ¶§ munja º¯¼ö¸¦ ÀûÀýÇÑ ´Ù¸¥ ¹®ÀÚ·Î ¹Ù²Ù±â¸¸ ÇÏ¸é µÈ´Ù. ¹«¾ùÀΰ¡ º¯ÇÒ ¼ö ÀÖ´Â Á¤º¸¸¦ ÀúÀåÇÒ ¶§ ¾²´Â °ÍÀÌ ¹Ù·Î º¯¼öÀÌ´Ù.

Ä¿¼­ À̵¿Å°¸¦ ÀԷ¹ޱâ À§ÇØ È®ÀåŰ¿¡ ´ëÇØ °£·«ÇÏ°Ô ¼Ò°³Çߴµ¥ ±×·¸´Ù¸é ±â´ÉŰ³ª Ins, Del °°Àº ³ª¸ÓÁö È®ÀåŰÀÇ ÄÚµå´Â ¾îµð¸¦ º¸¸é ¾Ë ¼ö ÀÖÀ»±î? È®ÀåŰ´Â Űº¸µåÀÇ ½ºÄµ ÄÚµå·Î Á¤ÀǵǴµ¥ ÀÌ Á¤º¸¸¦ ¾Ë°í ½ÍÀ¸¸é ½ºÄµ ÄÚµåÇ¥¸¦ º¸¸é µÈ´Ù. ±×·¯³ª Áö±ÝÀº ±¸Çϱ⵵ Èûµç ½ºÄµ ÄÚµåÇ¥¸¦ º¸´Â °Íº¸´Ù ´õ ÁÁÀº ¹æ¹ýÀº ÇÁ·Î±×·¥À» Â¥¼­ ½ÇÇàÇØ º¸´Â °ÍÀÌ´Ù.

 

¿¹ Á¦ : scancode

#include <Turboc.h>

 

void main()

{

     int ch;

     for(;;) {

          ch=getch();

          if (ch == 0xE0 || ch == 0) {

              ch=getch();

              printf("È®Àå Ű ÀÔ·Â, ÄÚµå = %d\n",ch);

          } else {

              printf("ÀÏ¹Ý ¹®ÀÚ ÀÔ·Â, ¹®ÀÚ = %c, ÄÚµå = %d\n",ch,ch);

              if (ch == 'q') exit(0);

          }

     }

}

 

ÀÌ ¿¹Á¦´Â ´©¸£´Â ŰÀÇ Á¾·ù¸¦ ÆÇº°Çؼ­ ¹®ÀÚ, È®ÀåŰ Äڵ带 Ãâ·ÂÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥À» ½ÇÇàÇØ ³õ°í ¾Ë°í ½ÍÀº È®Àå۸¦ ´­·¯º¸¸é È®ÀåŰ ¹øÈ£¸¦ ½±°Ô ¾Ë ¼ö ÀÖ´Ù.