면 블럭 ¶
¶
보 .
리를 보, 떤 만들 보.
리를 보, 떤 만들 보.
~cpp 1. 블럭 모 . 2.덤 블럭 next . 3.next 블럭 뒤 메 . 4.블럭 . 5.블럭 . 6. , 블럭 . 7. 를 변.
를 따 면 리를 만들 .
만, 막는 부 면 를 바란.
만, 막는 부 면 를 바란.
블럭 모 ¶
모 는 방는 러 .
n , n만 블럭 는 ,
를 들 T는(0,3)(1,1)(1,1) . 방 따, 부 바 .
리 른 방는 냥 블럭 만 배 는는 를 는 0 는 방 .
n , n만 블럭 는 ,
를 들 T는(0,3)(1,1)(1,1) . 방 따, 부 바 .
리 른 방는 냥 블럭 만 배 는는 를 는 0 는 방 .
) 모 배 는 방. 므, 더 를 .
~cpp
{{
{0,0,0,0},
{2,2,2,2},
{0,0,0,0},
{0,0,0,0}}
,{
{0,0,2,0},
{0,0,2,0},
{0,0,2,0},
{0,0,2,0}}
,{
{0,0,0,0},
{2,2,2,2},
{0,0,0,0},
{0,0,0,0}}
,{
{0,0,2,0},
{0,0,2,0},
{0,0,2,0},
{0,0,2,0}}
},
덤 블럭 next ¶
덤 블럭 start() srand((int)time(NULL)); , 덤 ,
블럭 덤 는 를 만들. 리 rand()를 , 를 맞 블럭
next변 면 .
리 변를 블럭 는 변를 만들, .
를 는 key_Right() 변 , 는 를 눌러보면 .
블럭 덤 는 를 만들. 리 rand()를 , 를 맞 블럭
next변 면 .
리 변를 블럭 는 변를 만들, .
를 는 key_Right() 변 , 는 를 눌러보면 .

)
~cpp int block_id; block_id=rand()%7; for (register int i=0;i<3;++i) for (register int j=0; j<4; ++j) block_next[i][j]=block_type[block_id][0][i][j]; prv_block=block_id; //변 .
블럭 메 ¶
블럭 메 보. 메 맨 데 .
는 , 블럭 면, 료 .
, x,y 는 변를 만들 면 .
리, 블럭 디를 변 만들 .
는 리 next 불러는 리 .
를 는 key_Left() 변 , 덤 만는 를 , 보면 .
)는 , 블럭 면, 료 .
, x,y 는 변를 만들 면 .
리, 블럭 디를 변 만들 .
는 리 next 불러는 리 .
를 는 key_Left() 변 , 덤 만는 를 , 보면 .
~cpp
for (register int i=0;i<3; ++i)
{
for (register int j=0; j<4; ++j)
{
if (0!=block_type[prv_block][0][i][j])
{
if (0==block[3+i][16+j])
block[3+i][16+j]=block_type[prv_block][0][i][j];
else
game_end();
}
}
}
x=3; //변 x
y=16; //변 y
shape=0; //변 블
now_block=prv_block; //변 블럭 ID
블럭 ¶
블럭 보. 는데는 러 리 만, 방 블럭 내면 바, 는 블럭만 는 방 . 번는, 블럭 부 면 멈 는 방 . 더 복, 더 볼 . 는, 벽 른 블럭 .
만들 , , 른 방 맞 를 를 , now_time() 블럭 내리는 를 .
만들 , , 른 방 맞 를 를 , now_time() 블럭 내리는 를 .

) 번 방 모 . -1 0 , 1 른 는 를 받는.
리링 많 모.
~cpp
int move_block(int where)// -1 0 1
{
int temp_x=x+where;
int temp_y=y-(where+1)%2;
int temp_block[4][4]={0,};
int ground[4]={0,};
int side[2][4]={0,};
int swit[2][4]={0,};
// 블럭 .
for (register int i=0;i<4; ++i)
{
for (register int j=0; j<4; ++j)
{
if (0!=block_type[now_block][shape][i][j])
{
if (i>=side[0][j] && 0==swit[1][j])
{
side[0][j]=i;
swit[1][j]=1;
}
side[1][j]=i;
if (j>=ground[i] && 0==swit[0][i])
{
ground[i]=j;
swit[0][i]=1;
}
}
}
}
// 블럭 는를 . 못 는 1 리 료.
for (i=0;i<4; ++i)
{
for (register int j=0; j<4; ++j)
{
if (0!=block_type[now_block][shape][i][j])
{
if (temp_x+i<0 || temp_x+i>9 )
return 1;
else if (temp_y+j<0 || temp_y+j>19 )
return 1;
else if (0!=block[temp_x+i][temp_y+j])
{
if (ground[i]+1>j && where==0)
return 1;
else if (side[0][j]+1>i && where==-1)
return 1;
else if (side[1][j]-1<i && where==1)
return 1;
}
}
}
}
// 블럭 미를 .
for (i=0;i<4; ++i)
for (register int j=0; j<4; ++j)
if (0!=block_type[now_block][shape][i][j])
block[x+i][y+j]=0;
// 블럭 린.
for (i=0;i<4; ++i)
for (register int j=0; j<4; ++j)
if (0!=block_type[now_block][shape][i][j])
block[temp_x+i][temp_y+j]=block_type[now_block][shape][i][j];
x=temp_x;y=temp_y;
return 0;
}
블럭 ¶
블럭 , , 는를 보, 벽 막 면 뒤 보 는 . 동보는 며, 변 를 , .
)~cpp
int temp_x=x;
int temp_y=y;
int temp_shape=(shape+1)%4;
int crash=2;
int temp_block[4][4]={0,};
//블럭 벽 는, 는를 .
while (2==crash)
{
for (register int i=0;i<4; ++i)
for (register int j=0; j<4; ++j)
temp_block[i][j]=0;
crash=0;
for (i=0;i<4; ++i)
for (register int j=0; j<4; ++j)
if (0!=block_type[now_block][shape][i][j]&& 0<=i+x-temp_x && 3>=i+x-temp_x )
temp_block[i+x-temp_x][j]=1;
for (i=0;i<4; ++i)
{
for (register int j=0; j<4; ++j)
{
if (0!=block_type[now_block][temp_shape][i][j])
{
if (temp_x+i<0)
{
temp_x+=1;crash=2;
}
else if (temp_x+i>9 )
{
temp_x-=1;crash=2;
}
else if (0!=block[temp_x+i][temp_y+j] && 1!=temp_block[i][j])
crash=1;
}
}
}
}
//블럭 면, 블럭 .
if (1==crash)
return 0;
for (register int i=0;i<4; ++i)
for (register int j=0; j<4; ++j)
if (0!=block_type[now_block][shape][i][j])
block[x+i][y+j]=0;
// 블럭 는.
for (i=0;i<4; ++i)
for (register int j=0; j<4; ++j)
if (0!=block_type[now_block][temp_shape][i][j])
block[temp_x+i][temp_y+j]=block_type[now_block][temp_shape][i][j];
//변 .
x=temp_x;y=temp_y;shape=temp_shape;
return 0;
블럭 ¶
블럭 내 , 면 . , 부는 내 .
for문 , 내 블럭 리는 는, 더 는를 볼 .
)for문 , 내 블럭 리는 는, 더 는를 볼 .
~cpp
void delete_block()
{
for (register int line=y; line<y+4; ++line)
for (register int i=0; i<10; ++i)
if (0==block[i][line])
i=10; //빈 블럭 면, 를 낸.
else
if (9==i) //블럭 는 .
{
for (register int k=0; k<10; ++k)
block[k][line]=0;
for (k=line; k<19; ++k) //블럭 내린.
for (register int l=0; l<10; ++l)
block[l][k]=block[l][k+1];
for (k=0; k<10; ++k)
block[k][19]=0;
--line;
}
}
변 ¶
는 블럭 내, 등 는 를 , 마 맞 면.
리 면 를 바, time_delay 변 를 면 .
리 면 를 바, time_delay 변 를 면 .












