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>
char A[][3][11]={
"0y0xwvutsrq","62222222225","50311111111",
"Y0zijklmnop","16200050000","05333333333",
"0Z0IJKLMNOP","11600050000","22433333333",
"XhH00000000","10000050000","12241111111",
"WgG00000000","10001111111","12210000003",
"VfF00100030","10001111111","12210000003",
"UeE00000000","11111111111","12210000003",
"TdD00000000","10001111111","12210000003",
"ScC00000000","10001111111","12210000003",
"RbB00200040","10001111111","12210000003",
"@aA00000000","50001111111","12212222221"};
char Pieza[][6][12]={
"000111110000","000000000003","000000000000","000000000003","322222222223","322222222222",
"011111111100","000000000003","000000000000","000000000003","133222222223","133222222222",
"111111111110","000000000003","000000000000","000000000003","111322222223","111322222222",
"111111111110","000000000003","000000000000","000000000003","111133222223","111132222222",
"111111111110","000000000003","000000000000","000000000003","111111322223","111113322222",
"111111111110","000000000003","000000000000","000000000003","111111133223","111111132222",
"011111111100","000000000003","000000000000","000000000003","111111111323","111111113222",
"000111110000","000000000003","000000000000","000000000003","111111111133","111111111332",
"000000000000","333333333333","333333333333","000000000003","333333333333","111111111113"};
char far*q=61096+(char far*)0xA0000000;
char far*Q[484];
int C[22][22],D[2][22][22];
int J[400],K[225],I[72],i[22];
int P[25][9][12],p[9][12];
int B[]={15,14,9,12,10,7};
int G[]={0,2,3,4,1,5,6};
int H[][3]={1,2,5,3,2,5,3,4,5,1,4,5};
int E,h=2571;
int a,j,n,v,w,x,y;
void Celda(F,f){
for(x=f;x--;K[n++]=J[h+F++]);
}
int main(){
_AX=0x13;
geninterrupt(0x10);
for(y=11;y--;i[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) I[w++]=320*y+x;
else 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];
for(v=22;v--;w=22,q-=2616)
for(w=22;w--;q-=12,J[D[0][v][w]]=j++)
for(Q[j]=q+i[w]+320*i[v],y=9;y--;)
for(x=12;x--;)
a=P[C[v][w]][y][x],
n=D[1][v][w],
*(q+p[y][x])=a<5?B[n<6?n:a]:8;
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);
for(y=0;++y<n;)
for(q=Q[K[y]],a=2;a--;E=a?getch():0)
for(x=72;x--;*(q+I[x])=a?43:*q);
return 0;
}
No hay comentarios