Jogo de Paciência em C
#include
typedef struct no { int valor; char naipe; struct no *prox;
}noCarta;
noCarta *monte=NULL; noCarta *pilhaDeBaixo[7]={NULL,NULL,NULL,NULL,NULL,NULL,NULL}; noCarta *pilhaDeCima[4]={NULL,NULL,NULL,NULL}; noCarta *atual=NULL;
int linhaEscondida[7];
void criarMonte() { int c1,c2; noCarta *n;
n=(noCarta *)malloc(sizeof(noCarta));
monte=n;
for(c1=0;c1naipe='p'; else if(c1==1) n->naipe='c'; else if(c1==2) n->naipe='e'; else if(c1==3) n->naipe='o';
if(c1!=3 || c2!=13) { n->prox=(noCarta *)malloc(sizeof(noCarta)); n=n->prox; }else n->prox=NULL; } }
}
noCarta *removeMonte(int posicao)
{
noCarta *atual=monte; noCarta *anterior=NULL;
int c;
for(c=0;cprox; }
if (atual==monte) monte=monte->prox; else anterior->prox=atual->prox;
return (atual);
}
void imprimeMonte()
{
noCarta *atual=monte;
while(atual!=NULL) { printf("[%d%c]\n",atual->valor,atual->naipe); atual=atual->prox; }
}
void embaralharMonte()
{
noCarta *n,*novomonte; int c;
srand(time(NULL));
n=removeMonte(rand()%c); novomonte=n;
for(c=51;c>0;c--) { n->prox=removeMonte(rand()%c); n=n->prox; }
n->prox=NULL;
monte=novomonte;
}
void distribuiCartas()
{
noCarta *atual; int c1,c2;
for(c1=0;c1prox!=monte) atual=atual->prox;
atual->prox=NULL; linhaEscondida[c1]=c1; }
}
void imprimeCartas()
{
noCarta *baixo[7],*cima[4]; int c1,c2;
printf("\n\n\n");
for(c1=0;c1valor,atual->naipe);
printf(" ");
for(c1=0;c1prox!=NULL) cima[c1]=cima[c1]->prox; printf("[%2d%c] ",cima[c1]->valor,cima[c1]->naipe); } }
printf("\n\n"); printf(" 0 1 2 3 4 5 6\n\n");
c1=-1;
while(baixo[0]!=NULL || baixo[1]!=NULL || baixo[2]!=NULL || baixo[3]!=NULL || baixo[4]!=NULL || baixo[5]!=NULL || baixo[6]!=NULL) { c1++; printf("%2d ",c1);