14-3.Tetris1

14-3-°¡.Å×Æ®¸®½º

Å×Æ®¸®½º´Â 1985³â ·¯½Ã¾ÆÀÇ ÇÁ·Î±×·¡¸ÓÀÎ ¾Ë·º¼¼ÀÌ ÆÄÁö³ëÇÁ°¡ óÀ½ °³¹ßÇÑ ÆÛÁñ °ÔÀÓÀÌ´Ù. °ÔÀÓ·êÀÌ ´Ü¼øÇÏ°í µÉ µí Çϸ鼭µµ Àß ¾ÈµÇ±â ¶§¹®¿¡ »ç¶÷À» ºüÁ®µé°Ô ¸¸µå´Â Áßµ¶¼ºÀ» °¡Áö°í ÀÖÀ¸¸ç ¹®¸íÀÇ ÇýÅÃÀ» ¹Þ´Â »ç¶÷ Áß¿¡ ÀÌ °ÔÀÓÀ» ÇØ º¸Áö ¾ÊÀº »ç¶÷ÀÌ ¾øÀ» Á¤µµ´Ù. ÆÄÁö³ëÇÁ´Â ¼ø½Ä°£¿¡ À¯¸íÇØÁö±â´Â ÇßÁö¸¸ ´ç½Ã´Â ºÒ¹ý º¹Á¦°¡ ³­¹«ÇÏ´ø ½ÃÀýÀ̶ó ±ÝÀüÀûÀÎ À̵æÀ» º¸Áö´Â ¸øÇß´Ù°í ÇÑ´Ù. »ç¶÷µéÀÌ µ·À» ÁÖ°í °ÔÀÓÀ» ÇÑ´Ù´Â °³³ä¿¡ Àͼ÷ÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. ´ë½Å ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»ç¿¡ ½ºÄ«¿ôµÇ¾î Áö±ÝÀº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼­ °ÔÀÓ °³¹ßÀ» ÇÏ°í ÀÖ´Ù.

³Ê¹« ³Ê¹« À¯¸íÇѵ¥´Ù ¾È Çغ» »ç¶÷ÀÌ °ÅÀÇ ¾øÀ¸¹Ç·Î ±»ÀÌ °ÔÀÓ ¹æ¹ýÀ» ¼³¸íÇÒ ÇÊ¿ä´Â ¾øÀ» °Í °°°í ¹Ù·Î Á¦ÀÛ¿¡ µé¾î°¡ º¸ÀÚ. °ÔÀÓ ±ÔÄ¢ÀÌ º¹ÀâÇؼ­ ±²ÀåÈ÷ ¸¹Àº Äڵ带 ÇÊ¿ä·Î ÇÒ °Í °°Áö¸¸ ¸·»ó ÀÛ¼ºÇØ º¸¸é ±×´ÙÁö ±æÁö´Â ¾Ê´Ù. ¹°·Ð ¿¹Á¦ ¼öÁØ Ä¡°í´Â ªÀº Æíµµ ¾Æ´ÏÁö¸¸ Áö±Ý±îÁö C¾ð¾î¸¦ ºÎÁö·±È÷ ÇнÀÇØ ¿Ô´Ù¸é ÀÌ ¿¹Á¦´Â ´ÉÈ÷ ºÐ¼®ÇØ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Àüü ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.

 

¿¹ Á¦ : Tetris1

#include <Turboc.h>

 

#define LEFT 75

#define RIGHT 77

#define UP 72

#define DOWN 80

#define ESC 27

#define BX 5

#define BY 1

#define BW 10

#define BH 20

 

void DrawScreen();

void DrawBoard();

BOOL ProcessKey();

void PrintBrick(BOOL Show);

int GetAround(int x,int y,int b,int r);

BOOL MoveDown();

void TestFull();

 

struct Point {

     int x,y;

};

Point Shape[][4][4]={

     { {0,0,1,0,2,0,-1,0}, {0,0,0,1,0,-1,0,-2}, {0,0,1,0,2,0,-1,0}, {0,0,0,1,0,-1,0,-2} },

     { {0,0,1,0,0,1,1,1}, {0,0,1,0,0,1,1,1}, {0,0,1,0,0,1,1,1}, {0,0,1,0,0,1,1,1} },

     { {0,0,-1,0,0,-1,1,-1}, {0,0,0,1,-1,0,-1,-1}, {0,0,-1,0,0,-1,1,-1}, {0,0,0,1,-1,0,-1,-1} },

     { {0,0,-1,-1,0,-1,1,0}, {0,0,-1,0,-1,1,0,-1}, {0,0,-1,-1,0,-1,1,0}, {0,0,-1,0,-1,1,0,-1} },

     { {0,0,-1,0,1,0,-1,-1}, {0,0,0,-1,0,1,-1,1}, {0,0,-1,0,1,0,1,1}, {0,0,0,-1,0,1,1,-1} },

     { {0,0,1,0,-1,0,1,-1}, {0,0,0,1,0,-1,-1,-1}, {0,0,1,0,-1,0,-1,1}, {0,0,0,-1,0,1,1,1} },

     { {0,0,-1,0,1,0,0,1}, {0,0,0,-1,0,1,1,0}, {0,0,-1,0,1,0,0,-1}, {0,0,-1,0,0,-1,0,1} },

};

 

enum { EMPTY, BRICK, WALL };

char *arTile[]={". ","¡á","¡à"};

int board[BW+2][BH+2];

int nx,ny;

int brick,rot;

 

void main()

{

     int nFrame, nStay;

     int x,y;

 

     setcursortype(NOCURSOR);

     randomize();

     clrscr();

     for (x=0;x<BW+2;x++) {

          for (y=0;y<BH+2;y++) {

              board[x][y] = (y==0 || y==BH+1 || x==0 || x==BW+1) ? WALL:EMPTY;

          }

     }

     DrawScreen();

     nFrame=20;

 

     for (;1;) {

          brick=random(sizeof(Shape)/sizeof(Shape[0]));

          nx=BW/2;

          ny=3;

          rot=0;

          PrintBrick(TRUE);

 

          if (GetAround(nx,ny,brick,rot) != EMPTY) break;

          nStay=nFrame;

          for (;2;) {

              if (--nStay == 0) {

                   nStay=nFrame;

                   if (MoveDown()) break;

              }

              if (ProcessKey()) break;

              delay(1000/20);

          }

     }

     clrscr();

     gotoxy(30,12);puts("G A M E  O V E R");

     setcursortype(NORMALCURSOR);

}

 

void DrawScreen()

{

     int x,y;

 

     for (x=0;x<BW+2;x++) {

          for (y=0;y<BH+2;y++) {

              gotoxy(BX+x*2,BY+y);

              puts(arTile[board[x][y]]);

          }

     }

 

     gotoxy(50,3);puts("Tetris Ver 1.0");

     gotoxy(50,5);puts("Á¿ì:À̵¿, À§:ȸÀü, ¾Æ·¡:³»¸²");

     gotoxy(50,6);puts("°ø¹é:ÀüºÎ ³»¸²");

}

 

void DrawBoard()

{

     int x,y;

 

     for (x=1;x<BW+1;x++) {

          for (y=1;y<BH+1;y++) {

              gotoxy(BX+x*2,BY+y);

              puts(arTile[board[x][y]]);

          }

     }

}

 

BOOL ProcessKey()

{

     int ch,trot;

 

     if (kbhit()) {

          ch=getch();

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

              ch=getch();

              switch (ch) {

              case LEFT:

                   if (GetAround(nx-1,ny,brick,rot) == EMPTY) {

                        PrintBrick(FALSE);

                        nx--;

                        PrintBrick(TRUE);

                   }

                   break;

              case RIGHT:

                   if (GetAround(nx+1,ny,brick,rot) == EMPTY) {

                        PrintBrick(FALSE);

                        nx++;

                        PrintBrick(TRUE);

                   }

                   break;

              case UP:

                   trot=(rot == 3 ? 0:rot+1);

                   if (GetAround(nx,ny,brick,trot) == EMPTY) {

                        PrintBrick(FALSE);

                        rot=trot;

                        PrintBrick(TRUE);

                   }

                   break;

              case DOWN:

                   if (MoveDown()) {

                        return TRUE;

                   }

                   break;

              }

          } else {

              switch (ch) {

              case ' ':

                   while(MoveDown()==FALSE) {;}

                   return TRUE;

              }

          }

     }

     return FALSE;

}

 

void PrintBrick(BOOL Show)

{

     int i;

 

     for (i=0;i<4;i++) {

          gotoxy(BX+(Shape[brick][rot][i].x+nx)*2,BY+Shape[brick][rot][i].y+ny);

          puts(arTile[Show ? BRICK:EMPTY]);

     }

}

 

int GetAround(int x,int y,int b,int r)

{

     int i,k=EMPTY;

 

     for (i=0;i<4;i++) {

          k=max(k,board[x+Shape[b][r][i].x][y+Shape[b][r][i].y]);

     }

     return k;

}

 

BOOL MoveDown()

{

     if (GetAround(nx,ny+1,brick,rot) != EMPTY) {

          TestFull();

          return TRUE;

     }

     PrintBrick(FALSE);

     ny++;

     PrintBrick(TRUE);

     return FALSE;

}

 

void TestFull()

{

     int i,x,y,ty;

 

     for (i=0;i<4;i++) {

          board[nx+Shape[brick][rot][i].x][ny+Shape[brick][rot][i].y]=BRICK;

     }

 

     for (y=1;y<BH+1;y++) {

          for (x=1;x<BW+1;x++) {

              if (board[x][y] != BRICK) break;

          }

          if (x == BW+1) {

              for (ty=y;ty>1;ty--) {

                   for (x=1;x<BW+1;x++) {

                        board[x][ty]=board[x][ty-1];

                   }

              }

              DrawBoard();

              delay(200);

          }

     }

}

 

Äֿܼ¡¼­ ½ÇÇàµÇ±â ¶§¹®¿¡ º°´Ù¸¥ Àå½ÄÀº ¾ø°í ºÎ°¡ ±â´ÉÀÌ ¾ø¾î ¼Ò½ºµµ 200ÁÙ Á¶±Ý ³Ñ´Â Á¤µµ¹Û¿¡ ¾ÈµÈ´Ù. Èæ¹éÀÇ ÄÜ¼Ö È­¸é¿¡¼­ ½ÇÇàµÇ±â ¶§¹®¿¡ º°·Î º¼ Ç°Àº ¾øÁö¸¸ ±×·¡µµ °ÔÀÓÀº Àß ÁøÇàµÇ¸ç ¿À¸®Áö³Î Å×Æ®¸®½ºÀÇ ±â´ÉÀº ´Ù °¡Áö°í ÀÖ´Ù.

Å×Æ®¸®½º°¡ È÷Æ®¸¦ Ä¡¸é¼­ È­·ÁÇÑ ±×·¡ÇÈ°ú »ç¿îµå, ±×¸®°í Àç¹ÌÀÖ´Â ±ÔÄ¢À» Ãß°¡ÇÑ ¼ö¸¹Àº ¾Æ·ù ¹öÀüÀÌ ¹ßÇ¥µÇ¾ú´Ù. ÇöÀç±îÁöµµ À¥¿¡¼­ ²öÁú±ä »ý¸í·ÂÀ» ÀÚ¶ûÇÏ°í ÀÖÀ¸¸ç ÇÚµåÆù¿¡¼­µµ ÀÌ °ÔÀÓÀ» ÇÒ ¼ö ÀÖ´Ù. ±×¸¸Å­ ÀÌ °ÔÀÓÀº °³ÀÛÀÇ ¿©Áö°¡ ¸¹°í ÁÁÀº ¾ÆÀ̵ð¾î¸¸ ÀÖ´Ù¸é ¾ó¸¶µçÁö Èï¹ÌÁøÁøÇÏ°Ô ¸¸µé¾î º¼ ¼ö ÀÖ´Â ÁÁÀº ½ÀÀ۰Ÿ®ÀÌ´Ù. ÀÌ °ÔÀÓÀÇ ¼Ò½º¸¦ ºÐ¼®ÇØ º¸µÇ ¹Ù·Î ¼³¸íÀ» º¸Áö ¸»°í °¡±ÞÀûÀ̸é È¥ÀÚ ÈûÀ¸·Î ¸ÕÀú ºÐ¼®ÇØ º¸±â ¹Ù¶õ´Ù. ³²ÀÇ ¼Ò½º¸¦ ÀÐ°í ±¸Çö ±â¹ýÀ» ÀÍÈ÷´Â °Íµµ ÀÏÁ¾ÀÇ ±â¼úÀÌ¸ç ¸¹Àº ¿¬½ÀÀÌ ÇÊ¿äÇÏ´Ù.

¿ì¼± Àüü ±¸Á¶¸¦ º¸ÀÚ. ¾î¶² ÇÁ·Î±×·¥À» ºÐ¼®ÇÒ ¶§´Â Ç×»ó ÇÁ·Î±×·¥ ÀüüÀÇ »óŸ¦ Ç¥ÇöÇÏ´Â Àü¿ªº¯¼öÀÇ ¿ªÇÒÀ» ÆľÇÇÏ°í ´ÙÀ½À¸·Î ÇÔ¼öÀÇ ±¸Á¶¸¦ ºÐ¼®ÇØ¾ß ÇÑ´Ù. ÇÁ·Î±×·¥ ¼±µÎ¿¡´Â ¸ÅÅ©·ÎµéÀÌ Á¤ÀǵǾî Àִµ¥ LEFT, RIGHT µîÀÇ Å° ¸ÅÅ©·Î´Â Áö±Ý±îÁö ÁÙ°ð »ç¿ëÇØ ¿Ô´ø °ÍµéÀÌ´Ù. BX, BY ¸ÅÅ©·Î´Â °ÔÀÓÆÇÀÇ Á»ó´Ü ÁÂÇ¥À̸ç BW, BH´Â °ÔÀÓÆÇÀÇ Æø°ú ³ôÀÌÀε¥ (5,1)¿¡¼­ ½ÃÀÛÇÏ¿© Æø 10, ³ôÀÌ 20À» °¡Áöµµ·Ï Á¤ÀǵǾî ÀÖ´Ù. BX, BY´Â ¿ÜºÎ º®ÀÇ Á»ó´Ü ÁÂÇ¥À̸ç BW, BH¿¡ ¿ÜºÎ º®Àº Á¦¿ÜÇÏ°í ¼ø¼öÇÑ °ÔÀÓÆÇÀÇ Æø°ú ³ôÀÌ·Î Á¤ÀÇÇÏ¿´´Ù.

¼Ò½º °÷°÷¿¡¼­ ÀÌ ¸ÅÅ©·ÎµéÀ» ÂüÁ¶ÇÏ¿© Ãâ·Â À§Ä¡¸¦ °áÁ¤ÇϹǷΠ¸¸¾à À§Ä¡³ª Å©±â¸¦ ¹Ù²Ù°í ½Í´Ù¸é ÀÌ ¸ÅÅ©·ÎÀÇ °ªÀ» º¯°æÇÏ¸é µÈ´Ù. ³ôÀ̸¦ ÁÙÀÌ¸é °ÔÀÓÀÇ ³­À̵µ°¡ Áõ°¡ÇÒ °ÍÀÌ°í ÆøÀ» ³ÐÈ÷¸é Á» ½¬¿öÁø´Ù. °ÔÀÓÆÇÀÇ À§Ä¡¿Í Å©±â¸¦ ÁöÁ¤ÇÏ´Â ÀÌ ¸ÅÅ©·ÎµéÀº °ÔÀÓÀ» ºÐ¼®ÇÏ°í À¯ÁöÇϴµ¥ ±²ÀåÇÑ µµ¿òÀ» ÁØ´Ù. »ó¼ö¸¦ Á÷Á¢ »ç¿ëÇϸé ÀÌ °ªÀÌ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ±Ý¹æ ¾Ë¾Æº¸±â ÈûµéÁö¸¸ ÀÌ ¸ÅÅ©·Î ´öºÐ¿¡ BW+2°¡ °ÔÀÓÆÇÀÇ Æø¿¡ ¾çÂÊ º®ÀÇ ÆøÀ» ´õÇÑ °ªÀ̶ó´Â °ÍÀ» Á÷°üÀûÀ¸·Î ¾Ë ¼ö ÀÖ°Ô µÈ´Ù.

Point, Shape ±¸Á¶Ã¼ ¹è¿­Àº º®µ¹ÀÇ ¸ð¾çÀ» Á¤ÀÇÇϴµ¥ ´Ù¼Ò º¹ÀâÇϹǷΠ´ÙÀ½ Ç׿¡¼­ µû·Î ºÐ¼®ÇØ º¸ÀÚ. EMPTY, BRICK, WALL ¿­°Å ¸â¹öµéÀº °ÔÀÓÆÇÀÇ »óŸ¦ Ç¥ÇöÇÏ¸ç °ÔÀÓÆÇÀº ºó °ø°£, º®µ¹, º® ¼Â Áß ÇϳªÀÇ »óŸ¦ °¡Áø´Ù. ÀÌ ¿­°ÅÇüÀº ű׸íÀ» ÁÖÁöµµ ¾Ê¾Ò°í º¯¼ö¸¦ ¼±¾ðÇÏÁöµµ ¾Ê¾ÒÀ¸¹Ç·Î ¿À·ÎÁö ¿­°Å ¸â¹ö¸¸ 0, 1, 2·Î Á¤ÀÇÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¼¼ °¡Áö »óÅ°ª¿¡ ´ëÇØ À̸§À» ºÙÀÓÀ¸·Î½á °³¹ßÀÚÀÇ ºÎÁ·ÇÑ ±â¾ï·ÂÀ» º¸Á¶ÇØÁØ´Ù. #defineÀ¸·Î ¸ÅÅ©·Î »ó¼ö¸¦ °¢°¢ Á¤ÀÇÇÏ´Â °Í°ú ±â´ÉÀûÀ¸·Î µ¿ÀÏÇÏÁö¸¸ Áߺ¹µÇÁö ¾Ê´Â ÀÏ·ÃÀÇ °ªÀ̹ǷΠ¿­°Å ¸â¹ö·Î ¼±¾ðÇÏ´Â °ÍÀÌ ´õ °£ÆíÇÏ´Ù.

arTile ¹è¿­Àº °ø°£, º®µ¹, º®ÀÇ ¸ð¾çÀ» Á¤ÀÇÇÏ´Â Å©±â 3ÀÇ ¹®ÀÚ¿­ ¹è¿­(¹®¹ýÀûÀ¸·Î´Â ¹®ÀÚÇü Æ÷ÀÎÅÍ ¹è¿­)Àε¥ °¢ ŸÀÏÀº 2°³ÀÇ ¹®ÀÚ·Î ±¸¼ºµÈ´Ù. ÄÜ¼Ö È­¸éÀº 80*25ÀÇ Çػ󵵸¦ °¡Áö¸ç ¹®ÀÚµéÀÌ ¼¼·Î·Î ±æÂßÇϱ⠶§¹®¿¡ Á¤»ç°¢Çü ŸÀÏÀ» ±×¸®±â À§Çؼ­´Â µÎ °³ÀÇ ¹®ÀÚ·Î ÇÑ Ä­À» Ç¥ÇöÇÏ´Â °ÍÀÌ º¸±â¿¡ ÁÁ´Ù. ¸¸¾à #À̳ª $°°Àº ¿µ¹®ÀÚ·Î ÇÑ Ä­À» ±×¸®¸é º®µ¹µéÀÌ ³Ê¹« ³¯¾ÀÇØÁ®¼­ Çö½Ç°¨ÀÌ ¾øÀ¸¸ç ȸÀüÇÒ ¶§ ¿Ö°îÀÌ ½ÉÇØÁ® °ÔÀÓÀÇ Àç¹Ìµµ ¹Ý°¨µÈ´Ù. ŸÀÏ Çϳª¸¦ 2¹®ÀڷΠǥ½ÃÇÏ¸é º¸±â¿¡´Â ÁÁÁö¸¸ Ãâ·ÂÇÒ ¶§¸¶´Ù xÁÂÇ¥¿¡ 2¸¦ °öÇØ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ±â´Â ÇÏ´Ù.

°ø°£ ŸÀÏÀº Á¡ Çϳª¿Í °ø¹é(". ")À¸·Î Á¤ÀǵǾî Àִµ¥ °øÁß¿¡ ¶° ÀÖ´Â º®µ¹ÀÇ ¼öÁ÷ À§Ä¡¸¦ ½±°Ô °¡´ÆÇÒ ¼ö ÀÖµµ·Ï °ø°£¿¡ Á¡À» Âï¾î ÁÖ¾ú´Ù. º®µ¹°ú º®ÀÇ Å¸ÀÏÀÎ "¡á", "¡à"¹®ÀÚ´Â Çѱ۰ú °°Àº 2¹ÙÀÌÆ® ¹®ÀÚÀÌ¸ç ¹®ÀÚÇ¥(charmap)¿¡¼­ º¹»çÇØ ºÙ¿© ³ÖÀº °ÍÀÌ´Ù. ÇÑ±Û À©µµ¿ìÁî°¡ ¾Æ´Ï°Å³ª ÄÚµå ÆäÀÌÁö°¡ ÇѱÛ(949)ÀÌ ¾Æ´Ï¸é ÀÌ ¹®ÀÚµéÀÌ ±úÁ® º¸À̹ǷΠÀÌ·² ¶§´Â "##"À̳ª "WW"µîÀÇ ¿µ¹® ±âÈ£·Î ¹Ù²Ù´Â °ÍÀÌ ÁÁ´Ù. arTile¹è¿­Àº ¿ä¼Ò ¼ø¼­¸¦ ºó °ø°£, º®µ¹, º®À¸·Î Á¤ÀÇÇÏ¿© ¿­°Å ¸â¹ö EMPTY, BRICK, WALLÀ» ÀÌ ¹è¿­ÀÇ Ã·ÀÚ·Î ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù. Áï º®µ¹ ¸ð¾çÀ» Ãâ·ÂÇÏ°í ½ÍÀ¸¸é arTile[BRICK] ¹®ÀÚ¿­À» Ãâ·ÂÇÏ°í Áö¿ï ¶§´Â arTile[EMPTY]¸¦ Ãâ·ÂÇÏ¸é µÈ´Ù.

board ¹è¿­Àº Àüü °ÔÀÓÆÇÀÇ »óÅÂ, Áï º®µ¹ÀÌ ¾îµð¿¡ ¾ó¸¶¸¸Å­ ½×¿© ÀÖ´ÂÁö¸¦ ±â¾ïÇÑ´Ù. °ÔÀÓÆÇÀÇ »óÇÏÁ¿쿡 º®ÀÌ ÀÖÀ¸¹Ç·Î °ÔÀÓÆÇÀÇ Æø°ú ³ôÀÌÀÎ BW, BH¿¡ 2¾¿ ´õÇØ ÁØ Å©±â·Î ¼±¾ðÇÏ¿´´Ù. ÀÌ ¹è¿­ ¿ä¼ÒµéÀº °¢ Ä­ÀÇ »óÅÂÀÎ EMPTY, BRICK, WALL°ª Áß Çϳª¸¦ °¡Áø´Ù. ù ¹ø° ÷ÀÚ¸¦ xÃà °ª, µÎ ¹ø° ÷ÀÚ¸¦ yÃà °ªÀ¸·Î Á¤ÀÇÇßÀ¸¹Ç·Î ÀÌ ¹è¿­Àº È­¸éÀÇ »óŸ¦ ¹Ý½Ã°è ¹æÇâÀ¸·Î 90µµ ȸÀüÇÑ »óÅ·Π±â¾ïÇÑ´Ù. ÁÂÇ¥¸¦ ÁöÁ¤ÇÒ ¶§´Â º¸Åë x, y¼øÀ» »ç¿ëÇϹǷΠÀÌ ¹è¿­ÀÇ Ã·ÀÚµµ °üÇà´ë·Î Á¤ÀÇÇß´Ù.

board ¹è¿­¿¡´Â ÀÌ¹Ì ¹Ù´Ú¿¡ Âø·úÇÑ º®µ¹ÀÇ Á¤º¸¸¸ ±â·ÏµÇ¸ç À̵¿ÁßÀÎ º®µ¹Àº ¾ÆÁ÷ ÀÚ¸®°¡ Á¤ÇØÁöÁö ¾Ê¾ÒÀ¸¹Ç·Î ±â·ÏµÇÁö ¾Ê´Â´Ù. nx, ny´Â À̵¿ÁßÀÎ º®µ¹ÀÇ ÇöÀç ÁÂÇ¥ÀÌµÇ ÀÌ °ªÀº ¹°·Ð ¹è¿­»óÀÇ ÁÂÇ¥°ªÀÌ´Ù. ¹è¿­»óÀÇ ÁÂÇ¥¸¦ È­¸é»óÀÇ ÁÂÇ¥·Î ¹Ù²Ü ¶§´Â BX+nx*2, BY+ny½ÄÀ» »ç¿ëÇÏ¸é µÈ´Ù. brick, rot´Â À̵¿ÁßÀÎ º®µ¹ÀÇ ¹øÈ£¿Í ȸÀü ¸ð¾çÀ» ±â¾ïÇÑ´Ù. brick, rot, nx, ny Àü¿ªº¯¼ö¸¦ ÂüÁ¶ÇÏ¸é ¾î¶² º®µ¹ÀÌ ¾î¶² ¸ð¾çÀ¸·Î ¾î´À À§Ä¡¿¡ ÀÖ´ÂÁö¸¦ ¾Ë°Ô µÈ´Ù.

´ÙÀ½Àº ÀÌ ¿¹Á¦ÀÇ ÇÔ¼öµé¿¡ ´ëÇØ ºÐ¼®ÇØ º¸ÀÚ. main¿Ü¿¡ 7°³ÀÇ ÇÔ¼ö°¡ Á¤ÀǵǾî Àִµ¥ º»Ã¼ÀÇ ÄÚµå´Â Â÷Â÷ ºÐ¼®ÇØ º¼ °ÍÀÌ°í ¿ªÇÒ¸¸ °£·«ÇÏ°Ô Á¤¸®ÇØ º¸¾Ò´Ù.

 

ÇÔ¼ö

¼³¸í

DrawScreen

È­¸é Àüü¸¦ ±×¸°´Ù. °ÔÀÓÆÇ°ú °ÔÀÓ À̸§, º®±îÁö ÇѲ¨¹ø¿¡ ±×¸°´Ù.

DrawBoard

°ÔÀÓÆǸ¸ ±×¸°´Ù. Áï ¿ÜºÎº®°ú ¹®ÀÚ¿­µéÀº »©°í ½×¿© ÀÖ´Â º®µ¹¸¸ ±×¸°´Ù.

ProcessKey

Å° ÀÔ·ÂÀ» ó¸®Çϴµ¥ main ÇÔ¼öÀÇ ºÎ´ãÀ» ´ú¾îÁÖ±â À§ÇØ º°µµÀÇ ÇÔ¼ö·Î ºÐ¸®ÇØ ³õ¾Ò´Ù. À̵¿ÁßÀÎ º®µ¹ÀÌ ¹Ù´Ú¿¡ ´êÀ¸¸é TRUE¸¦ ¸®ÅÏÇÑ´Ù.

PrintBrick

º®µ¹À» Ãâ·ÂÇϰųª »èÁ¦Çϴµ¥ À̵¿ÁßÀÎ º®µ¹À» ´ë»óÀ¸·Î ÇϹǷΠÀü¿ªº¯¼ö brick, rot, nx, ny°ªÀ» ÂüÁ¶ÇÑ´Ù.

GetAround

º®µ¹ ÁÖº¯¿¡ ¹«¾ùÀÌ ÀÖ´ÂÁö °Ë»çÇÏ¿© º®µ¹ÀÇ À̵¿ ¹× ȸÀü °¡´É¼ºÀ» Á¶»çÇÑ´Ù. À̵¿ÁßÀÎ º®µ¹ÀÇ ÁÖº¯À» Á¶»çÇÏ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î Àμö·Î Àü´ÞµÈ À§Ä¡ÀÇ º®µ¹ ¸ð¾çÀ» ÂüÁ¶ÇÑ´Ù.

MoveDown

º®µ¹À» ÇÑÄ­ ¾Æ·¡·Î À̵¿½ÃŲ´Ù. ¸¸¾à ¹Ù´Ú¿¡ ´ê¾Ò´Ù¸é TestFull ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ TRUE¸¦ ¸®ÅÏÇÑ´Ù.

TestFull

¼öÆòÀ¸·Î ´Ù ä¿öÁø ÁÙÀ» ã¾Æ »èÁ¦ÇÑ´Ù.

 

óÀ½ ºÐ¼®ÇÒ ¶§´Â ÀÌ ÇÔ¼öµéÀÇ µ¿ÀÛÀ» ¿ÏÀüÈ÷ ÀÌÇØÇÒ ¼ö ¾øÀ¸¹Ç·Î ÀÏ´Ü À̸§À¸·Î ±â´ÉÀ» À¯ÃßÇÑ ÈÄ¿¡ º»Ã¼ Äڵ带 ºÐ¼®ÇØ º¸´Â °ÍÀÌ ÁÁ´Ù.