TC写了一个俄罗斯方块,大家看看哦
代码:#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <dos.h>
int i,j,q,p,fx,fy,s,t;
int nx[5],ny[5],h[5],m[25];
int x[8][4]={0,0,0,0,
0,-2,-1,0,
0,0,1,2,
0,0,0,0,
0,-1,0,1,
0,0,1,1,
0,-1,0,1,
0,-1,0,1,
};
int y[8][4]={0,0,0,0,
0,0,0,1,
0,1,0,0,
0,1,2,3,
0,0,1,0,
0,1,0,1,
0,1,1,0,
0,0,1,1,
};
display(int i,int t)
{ int j;
for (j=0;j<=4;j++)
{
nx[j]=x[i][j];
ny[j]=y[i][j];
}
for (j=0;j<4;j++)
{textcolor(i);
q=fy+ny[j];p=fx+nx[j];
gotoxy(p,q);putch(t);
}
}
test()
{ char tmp[2];
int j;
s=0;
for (j=0;j<4;j++)
{ q=fy+y[i][j];p=fx+x[i][j];
gettext(p,q,p,q,&tmp);
if(tmp[0]!=32) s=1;
}
}
left()
{ int ox;
display(i,32);
ox=fx;fx--;
test();
if(s==1) fx=ox;
display(i,219);
}
right()
{ int ox;
display(i,32);
ox=fx;fx++;
test();
if(s==1) fx=ox;
display(i,219);
}
turn()
{ int c;
for(j=1;j<4;j++)
{ c=x[i][j]; x[i][j]=-y[i][j]; y[i][j]=c;}
test(); if(s==0) return;
for(j=1;j<4;j++)
{ c=y[i][j]; y[i][j]=-x[i][j]; x[i][j]=c; }
}
keyin()
{ int k;
if(kbhit())
{ k=getch();
if(k==27) exit(0);
if(k==0)
{ k=getch();
switch(k)
{ case 75: left(); break;
case 77: right(); break;
case 72: turn(); break;
case 80: break;
}
}
}
}
full()
{ int fj; char tmp[2];
for(j=0;j<4;j++)
{ q=fy+y[i][j]; m[q]=0;
for(p=11;p<=22;p++)
{ gettext(p,q,p,q,&tmp);
if(tmp[0]!=32) m[q]++;
}
if(m[q]==12) fj=1;
} if(fj==1) kill();
for(fj=4;fj<=23;fj++)
{ gotoxy(30,fj); printf("%d",m[fj]); }
}
kill()
{ char tmp[2],z;
for(z=23;z>4;z--)
{ if(m[z]==12)
{ for(q=z-1;q>4;q--)
{ for(p=11;p<=22;p++)
{ gettext(p,q,p,q,&tmp);
if(tmp[0]==32) { gotoxy(p,q+1); printf(" "); }
else { gotoxy(p,q+1); printf("?); }
} m[q+1]=m[q];
} z++;
}
}
}
main()
{ int z;
union REGS r;
r.x.ax=0x0100;
r.x.cx=0x2000;
textmode(C40);
randomize();
int86(0x10,&r,&r);
clrscr();
for (z=4;z<=23;z++)
{ m[z]=0;
gotoxy(10,z);
putch(178);
gotoxy(23,z);
putch(178);
}
for (z=10;z<=23;z++)
{
gotoxy(z,24);
putch(178);
}
fx=16;
fy=4;
go: i=rand()%7+1;
{ fy=4;fx=16;
while(1)
{ keyin();
display(i,219);
delay(32000); delay(32000); delay(32000); delay(32000);
display(i,32);
fy++;test();
if (s==1) { if (fy==4) exit(1); fy--;display(i,219); full(); goto go;}
}
}
}
程序有什么不足高手提提意见哦!