#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,f=9*!F,v=4;v--;b+=315)
for(w=5;w--;) *(q+b-35)=f,
*(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[p]-=1280)
for(x=64;x--;Q[n++]=Q[p++]-5)
if(y>37||y%2||x==1||x>62) continue;
else if(D[p]=!x||x>61||x%2<!y?2:0) muro(p,8);
else if(y<6||y>20||n%5&&x>2) continue;
else D[p]=x>57?62-x:n%5?n%5:5,
muro(p,6);
Inicio:
T=clock();
do{
while(kbhit()) E=getch();
if(E==27&&getch()==E) return 0;
if(E==77&&a) paleta(--a,9);
if(E==75&&a<57) paleta(a++,0);
if(E=(E=='-'&&M<5)-(E=='+'&&M>1)) M+=E;
}while(clock()-T<M);
x*=p=c%64<3||c%64>60?-1:1;
y=c>2365?1:y;
if(c<128) y=c-a<71+(x>0)&&c-a>63-(x<0)?-1:0,
x=(c-a<66)*p-(c-a>68)*p;
else{
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) x*=-p;
}
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.7 (0)
No hay comentarios