Çí»ç´Â °¡·Î, ¼¼·Î, ´ë°¢¼± ¹æÇâÀ¸·Î ¼¼ °³ÀÇ ¸ð¾çÀÌ ÀÏÄ¡ÇÏ¸é º®µ¹À» Á¦°ÅÇÏ´Â °ÔÀÓÀÌ´Ù. Å×Æ®¸®½º¿Í ¸ð¾ç»Ó¸¸ ¾Æ´Ï¶ó °ÔÀÓÀÇ ³í¸®±îÁöµµ °ÅÀÇ À¯»çÇϹǷΠóÀ½ºÎÅÍ ´Ù½Ã ÀÛ¼ºÇÏ´Â °Íº¸´Ù Tetris2 ¼Ò½º¸¦ º¹»çÇÑ ÈÄ ¼öÁ¤ÇÏ´Â °ÍÀÌ ´õ Æí¸®ÇÏ´Ù. ´ëºÎºÐÀÇ ÇÔ¼ö¿Í Àü¿ª º¯¼ö¸¦ ±×´ë·Î ¾µ ¼ö ÀÖµÇ Ã¤¿ò Á¡°ËÀ» ÇÏ´Â TestFull ÇÔ¼ö¸¸ Àß ÀÛ¼ºÇÏ¸é µÈ´Ù. TestFull ÇÔ¼ö´Â ³À̵µ°¡ ±×¸® ³ôÁö ¾Ê°í ±âº»ÀûÀÎ ¼öÇÐÀûÀÎ ³í¸®·Â¸¸ ÀÖÀ¸¸é ÀÛ¼ºÇÒ ¼ö ÀÖ¾î ¾Ë°í¸®Áò ¿¬½À¿ëÀ¸·Î ¾ÆÁÖ ÁÁ´Ù. ¿Ï¼ºµÈ Àüü ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.
¿¹ Á¦ : Hexa |
#include <Turboc.h>
#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80
#define PGUP 73
#define PGDN 81
#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);
BOOL MoveDown();
void TestFull();
void DrawNext();
void PrintInfo();
void MakeNewBrick();
enum { EMPTY, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, WALL };
char *arTile[]={". ","¡á","¡Ü","¡Ú","¢À","¢Ï","¡ß","¢¼","¢¾","¢Í","¢Ý","¡à"};
int board[BW+2][BH+2];
int nx,ny;
int brick[3];
int nbrick[3];
int score;
int bricknum;
int level;
void main()
{
int nFrame, nStay;
int x,y;
setcursortype(NOCURSOR);
randomize();
level=6;
for (;3;) {
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;
score=0;
bricknum=0;
MakeNewBrick();
for (;1;) {
bricknum++;
memcpy(brick,nbrick,sizeof(brick));
MakeNewBrick();
DrawNext();
nx=BW/2;
ny=3;
PrintBrick(TRUE);
if (GetAround(nx,ny) != EMPTY) break;
nStay=nFrame;
for (;2;) {
if (--nStay == 0) {
nStay=nFrame;
if (MoveDown()) break;
}
if (ProcessKey()) break;
delay(1000/20);
}
if (bricknum % 10 == 0 && nFrame > 5) {
nFrame--;
}
}
clrscr();
gotoxy(30,12);puts("G A M E O V E R");
gotoxy(25,14);puts("´Ù½Ã ½ÃÀÛÇÏ·Á¸é Y¸¦ ´©¸£¼¼¿ä");
if (tolower(getch()) != 'y') break;
}
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("Hexa Ver 1.0");
gotoxy(50,5);puts("Á¿ì:À̵¿, À§:ȸÀü, ¾Æ·¡:³»¸²");
gotoxy(50,6);puts("°ø¹é:ÀüºÎ ³»¸², ESC:Á¾·á");
gotoxy(50,7);puts("P:Á¤Áö,PgUp,PgDn:³À̵µ Á¶Àý");
DrawNext();
PrintInfo();
}
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;
int t;
if (kbhit()) {
ch=getch();
if (ch == 0xE0 || ch == 0) {
ch=getch();
switch (ch) {
case LEFT:
if (GetAround(nx-1,ny) == EMPTY) {
PrintBrick(FALSE);
nx--;
PrintBrick(TRUE);
}
break;
case RIGHT:
if (GetAround(nx+1,ny) == EMPTY) {
PrintBrick(FALSE);
nx++;
PrintBrick(TRUE);
}
break;
case UP:
PrintBrick(FALSE);
t=brick[0];
brick[0]=brick[1];
brick[1]=brick[2];
brick[2]=t;
PrintBrick(TRUE);
break;
case DOWN:
if (MoveDown()) {
return TRUE;
}
break;
case PGDN:
if (level > 2) {
level--;
PrintInfo();
}
break;
case PGUP:
if (level < 10) {
level++;
PrintInfo();
}
break;
}
} else {
switch (tolower(ch)) {
case ' ':
while(MoveDown()==FALSE) {;}
return TRUE;
case ESC:
exit(0);
case 'p':
clrscr();
gotoxy(15,10);
puts("Tetris Àá½Ã ÁßÁö. ´Ù½Ã ½ÃÀÛÇÏ·Á¸é ¾Æ¹« Å°³ª ´©¸£¼¼¿ä.");
getch();
clrscr();
DrawScreen();
PrintBrick(TRUE);
break;
}
}
}
return FALSE;
}
void PrintBrick(BOOL Show)
{
int i;
for (i=0;i<3;i++) {
gotoxy(BX+nx*2,BY+ny+i);
puts(arTile[Show ? brick[i]:EMPTY]);
}
}
int GetAround(int x,int y)
{
int i,k=EMPTY;
for (i=0;i<3;i++) {
k=max(k,board[x][y+i]);
}
return k;
}
BOOL MoveDown()
{
if (GetAround(nx,ny+1) != EMPTY) {
TestFull();
return TRUE;
}
PrintBrick(FALSE);
ny++;
PrintBrick(TRUE);
return FALSE;
}
void TestFull()
{
int i,x,y;
int t,ty;
BOOL Remove;
static int arScoreInc[]={ 0,1,3,7,15,30,100,500 };
int count=0;
BOOL Mark[BW+2][BH+2];
// ¹è¿¿¡ ±â·Ï
for (i=0;i<3;i++) {
board[nx][ny+i]=brick[i];
}
for (;;) {
// ¿¬¼Ó ¹«´Ì Á¡°Ë
memset(Mark,0,sizeof(Mark));
Remove=FALSE;
for (y=1;y<BH+1;y++) {
for (x=1;x<BW+1;x++) {
t=board[x][y];
if (t==EMPTY) continue;
// ¼öÆò
if (board[x-1][y]==t && board[x+1][y]==t) {
for (i=-1;i<=1;i++) Mark[x+i][y]=TRUE;
Remove=TRUE;
}
// ¼öÁ÷
if (board[x][y-1]==t && board[x][y+1]==t) {
for (i=-1;i<=1;i++) Mark[x][y+i]=TRUE;
Remove=TRUE;
}
// ¿ìÇÏÇâ
if (board[x-1][y-1]==t && board[x+1][y+1]==t) {
for (i=-1;i<=1;i++) Mark[x+i][y+i]=TRUE;
Remove=TRUE;
}
// ÁÂÇÏÇâ
if (board[x+1][y-1]==t && board[x-1][y+1]==t) {
for (i=-1;i<=1;i++) Mark[x-i][y+i]=TRUE;
Remove=TRUE;
}
}
}
if (Remove == FALSE) return;
// Á¦°Å ¾Ö´Ï¸ÞÀ̼Ç
for (i=0;i<6;i++) {
for (y=1;y<BH+1;y++) {
for (x=1;x<BW+1;x++) {
if (board[x][y]!=EMPTY && Mark[x][y]==TRUE) {
gotoxy(BX+x*2,BY+y);
puts(arTile[i%2 ? EMPTY:board[x][y]]);
}
}
}
delay(150);
}
// ¿¬¼ÓµÈ ¹«´Ì »èÁ¦
for (y=1;y<BH+1;y++) {
for (x=1;x<BW+1;x++) {
if (board[x][y]!=EMPTY && Mark[x][y]==TRUE) {
for (ty=y;ty>1;ty--) {
board[x][ty]=board[x][ty-1];
}
board[x][1]=EMPTY;
count++;
}
}
}
DrawBoard();
score += arScoreInc[min(count/3,7)];
PrintInfo();
}
}
void DrawNext()
{
int x,y,i;
for (x=50;x<=70;x+=2) {
for (y=12;y<=18;y++) {
gotoxy(x,y);
puts(arTile[(x==50 || x==70 || y==12 || y == 18) ? WALL:EMPTY]);
}
}
for (i=0;i<3;i++) {
gotoxy(60,14+i);
puts(arTile[nbrick[i]]);
}
}
void PrintInfo()
{
gotoxy(50, 9);printf("³À̵µ : %d ",level);
gotoxy(50,10);printf("Á¡¼ö : %d ",score);
gotoxy(50,11);printf("º®µ¹ : %d °³ ",bricknum);
}
void MakeNewBrick()
{
int i;
do {
for (i=0;i<3;i++) {
nbrick[i]=random(level)+1;
}
} while (nbrick[0]==nbrick[1] && nbrick[1]==nbrick[2] && nbrick[0]==nbrick[2]);
}
Å×Æ®¸®½º´Â °¢ º®µ¹ÀÇ ¸ð¾çÀÌ ´Ù¸¥µ¥ ºñÇØ Çí»çÀÇ º®µ¹µéÀº ¸ðµÎ ¼¼·Î ¼¼ ÄÂ¥¸®ÀÌµÇ »õ³¢ º®µ¹ÀÇ ±¸¼ºÀÌ ´Ù¸¦ »ÓÀÌ´Ù. ±×·¡¼ ¸ð¾çÀ» Á¤ÀÇÇÏ´Â Shape ¹è¿Àº ÇÊ¿äÄ¡ ¾ÊÀ¸¸ç ´ë½Å °¢ »õ³¢ º®µ¹ÀÇ ¹«´Ì¸¦ Á¤ÀÇÇÏ´Â arTile ¹è¿ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ ¿¹Á¦´Â ÃÑ 10°³ÀÇ ¹«´Ì¸¦ »ç¿ëÇ쵂 ³À̵µ¿¡ µû¶ó »ç¿ëÇÒ ¹«´ÌÀÇ °³¼ö¸¦ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. Àü¿ª º¯¼ö levelÀÌ ÀÌ·± ¿ëµµ·Î »ç¿ëµÇ¸ç ´ÜÃàÅ° PgUp, PgDnÀ¸·Î ½ÇÇàÁß¿¡ levelÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. º®µ¹ÀÇ ¸ð¾çÀÌ ¿¬¼ÓÀûÀ¸·Î °°µµ·Ï ¹èÄ¡ÇÏ´Â °ÍÀÌ °ÔÀÓÀÇ ¸ñÀûÀ̹ǷΠº®µ¹ÀÇ Á¾·ù°¡ ÀÛÀ»¼ö·Ï ³À̵µ´Â ½¬¿öÁø´Ù.
board³ª nx, ny Àü¿ª º¯¼ö´Â Å×Æ®¸®½º¿Í µ¿ÀÏÇ쵂 nx, ny´Â Á¦ÀÏ À§ º®µ¹ÀÇ ÁÂÇ¥¸¦ °¡¸®Å°´Â °ÍÀ¸·Î ÇÑ´Ù. ÀÌ·± º¯¼öÀÇ Àǹ̴ óÀ½ °³¹ßÇÒ ¶§ºÎÅÍ ºÐ¸íÈ÷ Á¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. Çí»çÀÇ º®µ¹Àº ȸÀüÇϱâ´Â Ç쵂 Àüü º®µ¹ÀÇ ¸ð¾çÀÌ ¹Ù²î´Â °ÍÀÌ ¾Æ´Ï¶ó »õ³¢ º®µ¹ÀÇ À§Ä¡¸¸ ¹Ù²î¹Ç·Î rot Àü¿ª º¯¼ö´Â ÇÊ¿ä¾øÀ¸¸ç ´ë½Å »õ³¢ º®µ¹ÀÇ ±¸¼ºÀ» ±â¾ïÇÏ´Â º°µµÀÇ ¹è¿ÀÌ ÇÊ¿äÇÏ´Ù. ±×·¡¼ brickÀº Å©±â 3ÀÇ Á¤¼öÇü ¹è¿·Î ¼±¾ðÇßÀ¸¸ç ÀÌ ¹è¿¿¡ À§ÂʺÎÅÍ °¢ »õ³¢ º®µ¹ÀÇ ¹øÈ£¸¦ ±â¾ïÇÏ°í ȸÀüÇÒ ¶§´Â »õ³¢ º®µ¹ÀÇ À§Ä¡¸¦ ¹Ù²Û´Ù.
Àüü ÇÁ·Î±×·¡ÀÇ È帧ÀÌ À¯»çÇϹǷΠmain ÇÔ¼öÀÇ ±¸Á¶´Â Å×Æ®¸®½ºÀÇ °ÍÀ» ±×´ë·Î »ç¿ëÇÏ°í ÀÖ´Ù. ´Ü º®µ¹À» ¸¸µé ¶§ ¼¼ °³ÀÇ ¹«´Ì°¡ ¸ðµÎ °°¾Æ¼´Â ¾ÈµÇ¹Ç·Î ÀÌ Á¶°Ç¿¡ ¸Â´Â º®µ¹À» ¸¸µå´Â MakeNewBrickÀ̶ó´Â º°µµÀÇ ÇÔ¼ö¸¦ ´õ Á¤ÀÇÇÑ´Ù´Â Á¡¸¸ ´Ù¸£´Ù. MakeNewBrickÀº nbrick ¹è¿¿¡ ³¼ö·Î »õ³¢ º®µ¹À» ¼±ÅÃÇ쵂 ¹«´Ì Áß Çϳª¶óµµ ´Ù¸¦ ¶§±îÁö ¹Ýº¹ÇÔÀ¸·Î½á Âø·ú Á÷ÈÄ¿¡ ¹Ù·Î Á¦°ÅµÇ´Â º®µ¹À» ¸¸µéÁö ¾Êµµ·Ï ÇÑ´Ù. ¼¼ °³ÀÇ ¹«´Ì°¡ ¶È°°Àº º®µ¹Àº °ÔÀÓÀÇ ¸ñÀû»ó ¸¸µéÁö ¾Ê´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
DrawScreen, DrawBoard, DrawNext, ProcessKey, PrintInfo µîÀÇ ÇÔ¼ö´Â °ÅÀÇ º¯ÇÑ °ÍÀÌ ¾ø´Ù. º®µ¹À» °ü¸®ÇÏ´Â ÇÔ¼öµéÀº ÀÚ·á ±¸Á¶°¡ ¹Ù²ñ¿¡ µû¶ó Á¶±Ý¾¿ º¯È°¡ Àִµ¥ PrintBrick ÇÔ¼ö´Â ¼¼ ÄÂ¥¸® º®µ¹À» nx, ny¿¡ Â÷·Ê´ë·Î Ãâ·ÂÇϰųª »èÁ¦ÇÑ´Ù. °¢ Ä¿¡ ´ëÇØ ·çÇÁ¸¦ µ¹¸ç brickÀÇ °¢ »õ³¢ º®µ¹ ¹«´Ì ¶Ç´Â °ø¹éÀ» Ãâ·ÂÇÑ´Ù. GetAround ÇÔ¼ö´Â ¿øÇüÀÌ ¹Ù²î¾ú´Âµ¥ ȸÀü ¸ð¾çÀÌ ¾ø°í º®µ¹ÀÇ ¸ð¾çÀÌ Á¤ÇØÁ® ÀÖÀ¸¹Ç·Î b, r Àμö°¡ Á¦°ÅµÇ¾ú´Ù. ÁÖ¾îÁø ÁÂÇ¥ x, y¿¡¼ ¾Æ·¡ÂÊÀ¸·Î ¼¼ ÄÀ» ÀÐ¾î º¸°í ±× Áß °¡Àå Å« °ªÀ» ¸®ÅÏÇÑ´Ù. MoveDownÀº ¾Æ·¡ÂÊÀ¸·Î ÇÑ Ä ³»¸®µÇ ¹Ù´ÚÀ̳ª ÀÌ¹Ì ½×Àº º®µ¹¿¡ ´êÀ» ¶§ TestFullÀ» È£ÃâÇÑ´Ù. ÀÌ ÇÔ¼öÀÇ ³»¿ëµµ Å×Æ®¸®½º¿Í ¶È°°´Ù.
ÀÌ °ÔÀÓÀÇ °¡Àå ÇÙ½É ÄÚµå´Â °ÔÀÓÀÇ ±ÔÄ¢ ±¸ÇöºÎÀÎ TestFullÇÔ¼ö¿¡ ¸ðµÎ ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç ÀÌ ºÎºÐÀÌ Å×Æ®¸®½º¿Í °¡Àå ´Ù¸£´Ù. board ¹è¿À» ÀÐ¾î °°Àº ¹«´Ì°¡ ¼¼ °³ ÀÌ»ó ¿¬¼ÓµÇ¾î ÀÖ´Â ÄÀ» ã¾Æ Á¦°ÅÇÏ´Â °ÍÀÌ TestFullÀÇ ÀÓ¹«ÀÌ´Ù. ÀÌ ÇÔ¼ö´Â º®µ¹ÀÌ ¹Ù´Ú¿¡ Âø·úÇßÀ» ¶§ MoveDown¿¡ ÀÇÇØ È£ÃâµÇ´Âµ¥ °ÔÀÓÆÇ¿¡ º¯È°¡ »ý°åÀ¸¹Ç·Î ¿¬¼ÓµÈ ¹«´Ì¸¦ Á¦°ÅÇØ¾ß ÇÑ´Ù. ¿ì¼± Âø·úÇÑ º®µ¹À» ¹è¿¿¡ ±â·ÏÇÑ´Ù. ±×¸®°í ¹«ÇÑ ·çÇÁ¸¦ µ¹¸ç ¼¼ ¹ø ÀÌ»ó ¿¬¼ÓµÈ ¹«´Ì¸¦ ¸ðµÎ ã¾Æ Á¦°ÅÇÑ´Ù.
À̶§ °í·ÁÇØ¾ß ÇÒ »çÇ×Àº ¿¬¼ÓµÈ ¹«´Ì°¡ ¹Ýµå½Ã ¼¼ °³°¡ ¾Æ´Ï¶ó ³× °³³ª ±× ÀÌ»óÀÏ ¼öµµ ÀÖ´Ù´Â °Í°ú Á¶±ÝÀÌ¶óµµ °ÔÀÓÆÇ¿¡ º¯È°¡ »ý±â¸é Ãß°¡·Î Á¦°ÅµÇ´Â º®µ¹ÀÌ »ý±â±âµµ ÇÑ´Ù´Â Á¡ÀÌ´Ù. Áï Á¦°ÅµÈ º®µ¹ À§ÂÊÀÇ º®µ¹ÀÌ ¾Æ·¡ÂÊÀ¸·Î ³»·Á ¿À¹Ç·Î ¶Ç ´Ù¸¥ Ãß°¡ Á¦°Å º®µ¹ÀÌ »ý±æ ¼öµµ ÀÖ´Ù. Å×Æ®¸®½º´Â ÇϳªÀÇ º®µ¹ÀÌ Âø·úÇÒ ¶§ Çѹø¿¡ º®µ¹À» ¸ðµÎ Á¦°ÅÇÒ ¼ö ÀÖÁö¸¸ Çí»ç´Â Á¦°Å¿¡ ÀÇÇØ »õ·Î¿î º®µ¹ÀÌ Ãß°¡·Î Á¦°ÅµÉ ¼ö Àֱ⠶§¹®¿¡ ´õ ÀÌ»ó Á¦°ÅÇÒ º®µ¹ÀÌ ¾øÀ» ¶§±îÁö Á¡°ËÀ» ¹Ýº¹ÇØ¾ß ÇÑ´Ù.
±×·¡¼ TestFullÀº ÇÑ ¹ø¿¡ Á¡°Ë°ú Á¦°Å¸¦ ´Ù ÇÒ ¼ö ¾øÀ¸¸ç Á¡°ËÀ» ¸ÕÀúÇÏ¿© Á¦°ÅÇÒ º®µ¹À» °í¸£°í ÀÌ·¸°Ô ¼±ÅÃÇÑ º®µ¹À» ÀÏ°ý Á¦°ÅÇÑ´Ù. ¼¼ °³ÀÇ ¹«´Ì°¡ ÀÏÄ¡Çß´Ù°í Çؼ ¹Ù·Î »èÁ¦ÇØ ¹ö¸®¸é ±× ÀÌ»óÀÇ ¹«´Ì°¡ ÀÏÄ¡Çß´ÂÁö¸¦ Á¤È®ÇÏ°Ô ÆǺ°ÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ¼¼ °³ÀÇ ¿¬¼Ó ¹«´Ì°¡ ÀÖ´ÂÁö Á¶»çÇÏ´Â ¹æ¹ýÀº »ý°¢º¸´Ù °£´ÜÇÏ´Ù. board ¹è¿ Àüü¸¦ ¼øȸÇÏ¸é¼ ºñ¾îÀÖÁö ¾ÊÀº °¢ Ä¿¡ ´ëÇØ ¾çÂÊ ÀÎÁ¢ º®µ¹ÀÇ ¹«´Ì°¡ °°ÀºÁö¸¦ Á¡°ËÇÏ´Â °ÍÀÌ´Ù. ÇϳªÀÇ Ä¿¡ ´ëÇØ ´ÙÀ½ 4°¡Áö °æ¿ì¸¦ Á¡°ËÇÏ¸é µÈ´Ù.
¼öÆòÀ¸·Î Á¡°ËÇÒ ¶§´Â ÀÎÁ¢ÇÑ Á¿ìÄÀ» º¸°í ¼öÁ÷À¸·Î Á¡°ËÇÒ ¶§´Â »óÇÏÄÀ» º¸¸é µÈ´Ù. ´ë°¢¼±À¸·Î Á¡°ËÇÒ ¶§´Â ±×¸²°ú °°ÀÌ ´ë°¢¼± ¸ÂÀºÆíÀÇ ¹«´Ì¸¦ º»´Ù. Á¡°Ë °á°ú ¼¼ ÄÀÇ ¹«´Ì°¡ ÀÏÄ¡Çϸé Mark ¹è¿¿¡ ÀÌ ÄÀÌ Á¦°Å ´ë»óÀÓÀ» Ç¥½ÃÇÑ´Ù. ¸ðµç Ä¿¡ ´ëÇØ ÀÌ °úÁ¤À» ¹Ýº¹Çϸé 4°³ ÀÌ»ó ¿¬¼ÓµÇ¾î ÀÖ´Â ¹«´Ìµé¿¡ ´ëÇؼµµ Á¤È®ÇÏ°Ô Ç¥½ÃÇÒ ¼ö ÀÖ´Ù. À̶§ ¾à°£ÀÇ Áߺ¹ Ç¥½Ã°¡ µÇ±â´Â ÇÏÁö¸¸ ³í¸®°¡ ´Ü¼øÇϱ⠶§¹®¿¡ Å« ¹®Á¦°¡ µÇÁö´Â ¾Ê´Â´Ù. ¶ÇÇÑ º®¿¡ ºÙ¾î ÀÖ´Â ÁÙÀº 4¹æÇâÀ» ´Ù º¼ ÇÊ¿ä°¡ ¾øÁö¸¸ ¾îÂ÷ÇÇ º®°ú ¾ÈÂÊÀÇ ¹«´Ì°¡ °°À» ¼ö´Â ¾øÀ¸¹Ç·Î ÀÌ °æ¿ìµµ ¾Æ¹« ºÎÀÛ¿ëÀÌ ¾ø´Ù.
À§ ±×¸²°ú °°Àº »óȲ¿¡¼ ä¿ò Á¦°Å Á¡°ËÀ» ÇÑ´Ù°í ÇØ º¸ÀÚ. ¿ÞÂÊÀÇ Àüȱ⠹«´Ì ¼ÂÀ» Á¡°ËÇÒ ¶§´Â ¼öÁ÷ ¹æÇ⸸ Á¡°ËÇÏ¸é µÈ´Ù. ¸¸¾à ÀÌ ÀüȱⰡ ¼öÆòÀ̳ª ´ë°¢¼±À¸·Îµµ ¿¬¼ÓµÇ¾î ÀÖ´Ù¸é ÀÌ Á¡°ËÀº ¾ÈÂÊ ÁÂÇ¥¸¦ º¼ ¶§ üũµÉ °ÍÀÌ´Ù. ±×·¯³ª ÀÌ À§Ä¡¿¡ ´ëÇؼµµ º°µµÀÇ Á¶°Ç Á¡°Ë¾øÀÌ 4¹æÇâÀ» ¸ðµÎ ´Ù º¸´Âµ¥ Á¦ÀÏ ¹Ù±ùÀÇ ¹«´Ì°¡ º®À̹ǷΠ¾ÈÂÊ°ú ÀÏÄ¡ÇÏ´Â ¼¼ °³ÀÇ ¹«´Ì°¡ Àý´ë·Î ³ª¿ÀÁö ¾Ê´Â´Ù. ¸¶Âù°¡Áö·Î ¾Æ·¡ÂÊÀÇ ³×¸ð ¹«´Ì ¼ÂÀ» Á¡°ËÇÒ ¶§´Â ¼öÆò ¹æÇ⸸ º¸¸é µÈ´Ù. Áß°£ÀÇ º° ¸ð¾ç 4°³¸¦ Á¡°ËÇÒ ¶§´Â °¡¿îµ¥¿¡ ÀÖ´Â µÎ °³ÀÇ º°¿¡¼ µÎ ¹ø Áߺ¹ Á¡°ËÇÏÁö¸¸ º° ºÎÀÛ¿ëÀº ¾ø´Ù.
TestFull ÇÔ¼ö´Â Á¦°ÅµÉ ÄÀ» Ç¥½ÃÇϱâ À§ÇØ Mark¶ó´Â º°µµÀÇ ¹è¿À» Ãß°¡·Î ¼±¾ðÇؼ »ç¿ëÇϴµ¥ ÀÌ·± ¹æ¹ýÀÌ ¹ø°Å·Î¿ì¸é board ¹è¿ ¿ä¼ÒÀÇ Æ¯Á¤ ºñÆ®¸¦ 1·Î ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ¾µ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î Á¦°Å ´ë»ó Ä¿¡ ´ëÇØ ÃÖ»óÀ§ ºñÆ®¸¦ 1·Î ¼³Á¤ÇÏ´Â °Íµµ ³ª¸§´ë·Î ¾µ¸¸ÇÏ´Ù. ±×·¯³ª ÀÌ·¸°Ô ÇÏ¸é ¹«´Ì¸¦ ºñ±³ÇÒ ¶§ ==·Î ¹Ù·Î ºñ±³ÇÒ ¼ö ¾ø°í ÃÖ»óÀ§ ºñÆ®¸¦ ¸¶½ºÅ© ¿ÀÇÁÇÑ ÈÄ ºñ±³ÇØ¾ß ÇϹǷΠ¿ÀÈ÷·Á ´õ ¹ø°Å·Î¿ÍÁø´Ù.
board Á¡°ËÀ» Çϱâ Àü¿¡ Remove´Â FALSE·Î Ãʱâȵǰí Çϳª¶óµµ ¿¬¼ÓµÈ ¹«´Ì°¡ ¹ß°ßµÇ¸é ÀÌ °ªÀ» TRUE·Î º¯°æÇϴµ¥ ÀÌ´Â Å»Ãâ ½ÃÁ¡À» °áÁ¤Çϱâ À§ÇؼÀÌ´Ù. board ¹è¿ Àüü¸¦ ´Ù Á¡°ËÇصµ ¿¬¼ÓµÈ ¹«´Ì°¡ ÀüÇô ¹ß°ßµÇÁö ¾ÊÀ¸¸é À̶§°¡ ¹Ù·Î ÇÔ¼ö¸¦ Á¾·áÇÒ ¶§ÀÌ´Ù. ¹Ù²Ù¾î ¸»ÇÏ¸é ¿¬¼ÓµÈ ¹«´Ì°¡ ¹ß°ßµÇ¸é ´Ù½Ã Á¡°ËÀ» ¹Ýº¹ÇØ¾ß ÇÏ¸ç ½×ÀÎ º®µ¹ÀÌ ¸¹À» ¶§´Â ´Ù¼¸ ¹ø, ¿©¼¸ ¹ø ÀÌ °úÁ¤À» ¹Ýº¹ÇÒ °æ¿ìµµ ÀÖ´Ù.
Á¦°ÅÇØ¾ß ÇÒ º®µ¹ÀÌ ¹ß°ßµÇ¾úÀ¸¸é ÀÌ ÄµéÀ» ±ô¹Ú°Å¸®µµ·Ï ÇÏ¿© »ç¿ëÀÚ¿¡°Ô ¾î¶² º®µ¹ÀÌ Á¦°ÅµÇ´ÂÁö¸¦ ºÐ¸íÈ÷ Ç¥½ÃÇÑ´Ù. ÀÌ Ã³¸®°¡ »ý·«µÇ¸é °ÔÀÓÆÇÀÌ ³Ê¹« ±Þ°ÝÇÏ°Ô º¯ÇϹǷΠ»ç¿ëÀÚ°¡ °ÔÀÓÀÇ ÁøÇà »óȲÀ» Á¤È®ÇÏ°Ô ¾Ë ¼ö ¾ø´Ù. Çí»ç´Â Àڽŵµ ¸ð¸£´Â »çÀÌ¿¡ º®µ¹µéÀÌ ¿¬¼ÓµÇ¾î ÇѲ¨¹ø¿¡ Á¦°ÅµÇ±âµµ ÇϹǷΠÀÌ Ã³¸®´Â ´Ü¼øÇÑ ¸ÚºÎ¸®±â°¡ ¾Æ´Ï¶ó ²À ÇÊ¿äÇÑ Çʼö ¼ºñ½ºÀÌ´Ù.
±ô¹ÚÀÓ Ã³¸®±îÁö ¿Ï·áÇßÀ¸¸é ½ÇÁ¦ º®µ¹À» ¹è¿¿¡¼ Á¦°ÅÇÑ´Ù. óÀ½ºÎÅÍ ³¡±îÁö ´Ù½Ã ·çÇÁ¸¦ µ¹¸é¼ Á¦°ÅµÉ º®µ¹À» À§ÂÊÀÇ Á¤º¸·Î µ¤¾î ¹ö¸®¸é µÈ´Ù. º®µ¹ Á¦°Å ÈÄ °ÔÀÓÆÇÀ» ¿ÏÀüÈ÷ ´Ù½Ã ±×¸®°í Á¡¼ö¸¦ °è»êÇÑ ÈÄ ´Ù½Ã ·çÇÁÀÇ ¼±µÎ·Î µ¹¾Æ°¡ ´õ Á¦°ÅÇÒ º®µ¹ÀÌ ÀÖ´ÂÁö °è¼Ó Á¡°ËÇÑ´Ù. ÇѲ¨¹ø¿¡ ¸¹Àº º®µ¹À» ¾ø¾Ù¼ö·Ï ³ôÀº Á¡¼ö¸¦ ÁÖµµ·Ï Çߴµ¥ À̴ °°ÇÏ°Ô ¼¼ °³¾¿ ¾ø¾ÖÁö ¸»°í °¡±ÞÀû ¸ð¾Æ µÎ¾ú´Ù°¡ ÇѲ¨¹ø¿¡ ¾ø¾Öµµ·Ï À¯µµÇÏ´Â È¿°ú°¡ ÀÖ´Ù. ±×·¡¼ »ç¿ëÀÚ´Â ´ÙÀ½ ³ª¿Ã º®µ¹À» º¸°í ÀÌÁß, »ïÁßÀ¸·Î º®µ¹À» Á¦°ÅÇÏ´Â °è»êÀ» ¹Ì¸® ÇØ¾ß Çϸç ÀÌ·± ¸Ó¸® ±¼¸®±â°¡ ÀÌ °ÔÀÓÀÇ ¹¦¹ÌÀÌ´Ù. ¿Ö³ÄÇÏ¸é ¸·»ó ÇØ º¸¸é ¶æ´ë·Î ½±°Ô µÇÁö ¾ÊÀ¸¸ç Àß ¾ÈµÇ¸é ¾à¿À¸£±â ¶§¹®ÀÌ´Ù.