2、h>#includechargcText[]="1LJTSZ#";structtetris{int_pool[16][32],(*pool)[32],tmap[8][4][16];intx,y,s,st,t;}gt;voidtrsInit(){intsp[8][4]={{15,4369},{23,785,116,547},{71,275,113,802},{39,305,114,562},{54,561},{99,306},{51,51},{-1}};int*p,i,j,b;
3、for(p=sp[0];*p>=0;++p)if(*p==0)*p=p[-2];gt.pool=>._pool[4];for(j=0;j<7;++j)for(i=0;i<4;++i)for(b=0;b<16;++b)gt.tmap[j+1][i][b]=(sp[j][i]&1)*(j+1),sp[j][i]>>=1;memset(gt._pool,-1,sizeof(gt._pool));for(i=0;i<10;++i)memset(>.pool[i],0,sizeof(int[21]
4、));return;}inttrsCopy(intsp[],intx,inty,intc){inti,cx,cy;for(i=0;i<16;++i)if(sp[i]){cx=x+(i&3),cy=y+(i>>2);if(gt.pool[cx][cy])if(c==2)gt.pool[cx][cy]=0;elsereturn0;if(c==1)gt.pool[cx][cy]=sp[i];}return1;}inttrsScene(){intx,y=0;COORDpos={0};gt.s=rand(
5、)%7+1,gt.st=gt.t=0;gt.x=3,gt.y=0;for(--gt.t;;Sleep(1),--gt.t){intk=0;while(kbhit()){k=getch();if(k==27)return0;if(k=='A'
6、
7、k=='a'){if(trsCopy(gt.tmap[gt.s][gt.st],gt.x-1,gt.y,0))--gt.x;}elseif(k=='D'
8、
9、k=='d'){if(trsCopy(gt.tmap[gt.s][gt.st],gt.x+1,gt.
10、y,0))++gt.x;}elseif(k=='W'
11、
12、k=='w'){if(trsCopy(gt.tmap[gt.s][(gt.st+1)%4],gt.x,gt.y,0))gt.st=(gt.st+1)%4;}}if(k=='S'
13、
14、k=='s'
15、
16、gt.t<0){if(trsCopy(gt.tmap[gt.s][gt.st],gt.x,gt.y+1,0))++gt.y,gt.t=50;else{trsCopy(gt.tmap[gt.s][gt.st],gt.x,gt.y,1);for(--y
17、;y>0;--y){for(x=0;gt.pool[x][y]>0;++x);if(gt.pool[x][y]<0)for(k=y++;k>0;--k)for(x=0;gt.pool[x][0]>=0;++x)gt.pool[x][k]=gt.pool[x][k-1];}return1;}}trsCopy(gt.tmap[gt.s][gt.st],gt.x,gt.y,1);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
18、for(y=1;gt.pool[0][y]>=0;++y,putchar(10)){for(x=0;gt.pool[x][0]>=0;++x){putchar(gcText[gt.pool[x][y]]);}}trsCopy(gt.tmap[gt.s][gt.st],gt.x,gt.y,2);}}intmain(){srand((unsigned)time(NULL));for(trsInit();trsScene(););return0;}---------------------------