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