Tablero de parchis.
C/Visual C
Actualizado el 12 de Agosto del 2020 por Adelino (27 códigos) (Publicado el 3 de Agosto del 2020)
9.236 visualizaciones desde el 3 de Agosto del 2020
Dibujado en pantalla de graficos (Modo 13h).


#include<dos.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char A[][3][11]={
"0y0xwvutsrq","72222222225","50311111111",
"Y0zijklmnop","17200050000","05333333333",
"0Z0IJKLMNOP","11700050000","22433333333",
"XhH00000000","10000050000","12241111111",
"WgG00000000","10001111111","12210000003",
"VfF00100030","10001111111","12210000003",
"UeE00000000","11111166611","12210000003",
"TdD00000000","10001166611","12210000003",
"ScC00000000","10001166611","12210000003",
"RbB00200040","10001111111","12210000003",
"@aA00000000","50001111111","12212222221"};
char Pieza[][6][12]={
"000111110000","000000000003","000000000000","000000000003","322222222223","322222222222",
"011111111100","000000000003","000000000000","000000000003","133222222223","133222222222",
"111122221110","000000000003","000000000000","000000000003","111322222223","111322222222",
"112222222210","000000000003","000000000000","000000000003","111133222223","111132222222",
"112222222210","000000000003","000000000000","000000000003","111111322223","111113322222",
"112222222210","000000000003","000000000000","000000000003","111111133223","111111132222",
"011122221100","000000000003","000000000000","000000000003","111111111323","111111113222",
"000111110000","000000000003","000000000000","000000000003","111111111133","111111111332",
"000000000000","333333333333","333333333333","000000000003","333333333333","111111111113"};
char far*Q[484],l[]={"865320864208620840804"};
char far*q=61108+(char far*)0xA0000000;
int C[22][22],D[2][22][22];
int J[400],K[225],I[2][80],i[2];
int L[6][6],M[4][9],m[6],z[22];
int P[25][9][12],p[9][12];
int B[]={30,43,9,12,2,28,29};
int G[]={0,2,3,4,1,5,6,7};
int H[][3]={1,2,5,3,2,5,3,4,5,1,4,5};
int Z[][2]={0,1,3,2};
int E,h=2571;
int a,j,n,v,w,x,y;
void Celda(F,F1){
for(x=F1;x--;K[n++]=J[h+F++]);
}
Figura(char far*F,char F1,char F2){
for(v=i[F1];v--;*(F+I[F1][v])=F2);
}
int main(){
_AX=0x13;
geninterrupt(0x10);
srand(time(NULL));
for(y=6;y--;)
for(x=y+1;x--;L[y][x]=l[a++]-48);
for(y=11;y--;z[y]=1)
for(x=11;x--;)
for(n=3;n--;)
if(a=A[y][n][x]-48)
if(n>1) C[y+11][x+11]=a=4*a,
C[10-y][x+11]=a+1,
C[10-y][10-x]=a+2,
C[y+11][10-x]=a+3;
else D[n][y+11][x+11]=a,
D[n][10-x][y+11]=n?a=G[a]:a+100,
D[n][10-y][10-x]=n?a=G[a]:a+200,
D[n][x+11][10-y]=n?G[a]:a+300;
for(y=9;y--;h-=308)
for(x=12;x--;p[y][x]=h--)
for(n=20,v=6;v--;n-=4)
if(a=Pieza[y][v][x]-48)
if(v) P[n][y][x]=H[0][--a],
P[n+1][8-y][x]=H[1][a],
P[n+2][8-y][11-x]=H[2][a],
P[n+3][y][11-x]=H[3][a];
else while(a--) I[a][i[a]++]=320*y+x;
for(v=22;v--;q-=2616)
for(w=22;w--;){
Q[j]=q-=12;
if(h=C[v][w]) Q[j]+=320*z[v]+z[w];
n=D[1][v][w];
for(y=9;y--;)
for(x=12;x--;)
a=P[h][y][x],
*(q+p[y][x])=a<5?B[n<7?n:a]:8;
if(n==6) n=Z[z[v]][z[w]],
M[n][m[n]++]=j;
J[D[0][v][w]]=j++;
}
for(h=n=y=0;++y<5;h+=100)
Celda(16,17);
K[h=0]-=K[n++]=K[0];
for(y=4;y--;h+=100)
Celda(49,17);
for(y=0;y<4;y++)
for(h=100*y,a=2;a--;h=400-100*G[4-y])
Celda(66-32*a,9);
for(h=y=0;++y<5;h+=100)
Celda(1,4);
h=1;
Inicio:
Figura(q=Q[K[h]],0,14);
for(h+=y=x=rand()%6+1;x--;)
Figura(Q[m[x]=M[0][L[y-1][x]]],1,0);
E=getch();
while(h>=n) if(getch()==27) return 0;
for(x=y;x--;)
Figura(Q[m[x]],1,29);
Figura(Q[K[h-y]],0,*q);
goto Inicio;
}
No hay comentarios