#include<dos.h>
#include<time.h>
#include<stdio.h>
#include<conio.h>
char D[2560],far*q=(char far*)0xA0000000;
char A[7][7]={"0011100","0111110"};
int B[37],C[2560],Q[2561]={62715};
int M=2,a=30,c=99,n=1;
int E,b,d,p,v,w,x,y;
void paleta(f,F){
for(b=Q[f]+320,v=4;v--;b+=315)
for(w=5;w--;) *(q+b-35)=!F*9,
*(q+b++)=F;
}
void muro(f,F){
for(d=v=D[f];v--;C[f-v]=C[f-v-64]=F?f:0);
for(b=Q[f]+321,v=8;v--;b+=322-5*d)
for(w=5*d-2;w--;*(q+b++)=F);
}
int main(){
_AX=0x13;
geninterrupt(0x10);
clock_t T;
for(y=7;y--;b+=313)
for(x=7;x--;b++)
if(A[y][x]!=48&&A[6-y][6-x]!=48) B[v++]=b;
for(y=40;y--;Q[n-1]-=1280)
for(x=64;x--;Q[n++]=Q[n-1]-5)
if(y%2||x==1||x>62) continue;
else if(D[n-1]=!x||x>61||x%2<!y?2:0) muro(n-1,8);
else if(y<6||y>20||n%5&&x>2) continue;
else D[n-1]=x>57?62-x:n%5?n%5:5,
muro(n-1,6);
Inicio:
T=clock();
do{
while(kbhit()) E=getch();
if(E==27&&getch()==E) return 0;
if(E==77&&a>2) paleta(--a,9);
if(E==75&&a<55) paleta(a++,0);
if(E=(E=='-'&&M<5)-(E=='+'&&M>1)) M+=E;
}while(clock()-T<M);
if(p=c%64<3||c%64>60) x=-x;
y=c>2365?1:y;
if(c>127){
if(n=C[c-x]) muro(n,0);
if(C[d=c-64*y]||C[d-=x]*!n&&++n)
if(y=-y) muro(C[d],0);
if(n&&!p) x=-x;
}
else d=c-64-a,
y=d<7+(x>0)&&d>=-(x<0)?-1:0,
x=d<5&&d>1?0:!p?(d<2)-(d>4):x;
while(!y) y-=getch()==13;
for(v=2;v--;c-=v?64*y+x:0)
for(b=Q[c]-321,d=14*!v,w=37;w--;)
*(q+b+B[w])=d;
goto Inicio;
}
Comentarios sobre la versión: 1.6 (0)
No hay comentarios