면 블럭 ¶
¶
보 .
리를 보, 떤 만들 보.
리를 보, 떤 만들 보.
~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 변 를 면 .