#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
clock_t T;
textmode(C40);
_setcursortype(_NOCURSOR);
char far*p=31+(char far*) 0xB8000000L;
char E,A[][12]={"000000111100",
"000010111000",
"000100011100",
"000100111000",
"000011011000",
"001100011000",
"000110011000"};
int B[]={6,2,10,7,3,0,11,8,4,1,9,5};
int F[]={0x10,0x20,0x30,0x40,0x50,0x60,0x10};
int N[]={2,4,80,82,84,86,160,162,164,166,242,244};
int C[12],D[12],Y[25];
int a,c,d,n,x,y;
for(y=25;y--;)
for(Y[y]=0,x=11;x--;)
*(p+80*y+2*x-2)=0x70*(y<1||y>23||x<1||x>9);
Inicio:
a=rand()%7;
c=86;
for(n=12;n--;)
if(C[n]=A[a][n]-48)
if(!*(p+N[n]+c)) *(p+N[n]+c)=F[a];
else while(1) if(getch()==27) return 0;
T=clock();
while(n<0){while(E=kbhit()) getch();
while(!E)
if(kbhit()) E=getch();
else if(clock()-T>9) E=80;
if(E==27&&getch()==27) return 0;
while(++n<12)
if(C[n]) *(p+N[n]+c)=0;
if(E==72){while(n--)
if((D[n]=C[B[n]])&&*(p+N[n]+c)) break;
if(n<0)
for(n=12;n--;)
if(C[n]=D[n]) *(p+N[n]+c)=F[a];
}
d=c+80*(E==80)+2*(E==77)-2*(E==75);
if(d!=c){while(n--)
if(C[n]&&*(p+N[n]+d)) break;
if(n<0)
for(c=d,n=12;n--;)
if(C[n]) *(p+N[n]+c)=F[a];
}
if(n>=0)
for(n=0;n<12;n++)
if(C[n]) *(p+N[n]+c)=F[a];
if(E==80) T=clock();
else n=-1;
}
for(y=c/80;y<y+4;y++){if(y>23) break;
for(d=80*y,n=x=0;x++<9;d+=2)
if(*(p+d)) n++;
if(n>8) for(d=80*y,n=x=0;x++<9;d+=2)
*(p+d)=0;
Y[y]=n>0;
}
while(--y)
if(!Y[n=y])
while(--n)
if(Y[n]){a=80*n;
d=80*y;
for(Y[n]=x=0;x++<9;a+=2,d+=2)
if(*(p+a)) *(p+a)-=*(p+d)=*(p+a);
Y[y]=n=1;
}
goto Inicio;
}
Comentarios sobre la versión: 1.1 (0)
No hay comentarios