de inicio da fila printf("\nValor %d Naipe %c\n",aux->x.valor,aux->x.naipe); aux = aux->prox; } }/*===========================* * Pega uma carta *===========================*/PUBLIC Tcarta pegaCarta(Tmonte *monte){ Tbaralho *aux; Tcarta x; aux = (*monte)->prox; (*monte)->prox = aux->prox; x = aux->x; LIBERA_NODO(aux); return(x);}/*==========================* * Devolve uma carta *==========================*/PUBLIC void devolveCarta(Tmonte *monte, Tcarta carta){ Tbaralho *aux = ALOCA_NODO(); aux->x = carta; aux->prox = (*monte)->prox; (*monte)->prox = aux;}/*=======================* * Embaralha o Baralho *=======================*/PUBLIC void embaralha(Tmonte *monte){ //Embaralhar o Baralho //para usar o random srand(time(NULL)); Tbaralho *aux, *aux0; Tmonte aux1 = criaFila(),aux2 = criaFila(); Tcarta x; int p; //aux esta recebendo o monte->prox aux = (*monte)->prox; //enquanto aux->x.valor for diferente do flag while (aux->x.valor != -1){ //pegando uma carta do endereco do ponteiro para monte x = pegaCarta(&(*monte)); //p vai receber um valor aleatorio p = rand() % 100; //se o valor de p for par if (p % 2 == 0) //jogo ele na fila aux1 devolveCarta(&aux1,x); //caso contrario jogo na fila aux2 else devolveCarta(&aux2,x); //aux vai receber monte->prox aux = (*monte)->prox; } //monte que esta vazio vai receber a fila aux1->prox (*monte)->prox = aux1->prox; aux = (*monte); aux0 = (*monte)->prox; while(aux0->x.valor != -1){ aux= aux->prox; aux0= aux0->prox; } aux->prox= aux2->prox; }/*========================* * destroi Baralho *========================*/PUBLIC void destroiBaralho (Tmonte *monte){ Tbaralho *aux; Tcarta x; //aux esta recebendo o monte->prox aux = (*monte)->prox; //enquanto aux->x.valor for diferente do flag while (aux->x.valor != -1){ //pegando uma carta do endereco do ponteiro para monte x = pegaCarta(&(*monte)); aux = (*monte)->prox; }}/*===================* * Jogar *===================*/PUBLIC void jogar(Tmonte *monte,char nome1[], char nome2[], int *placar1, int *placar2){ srand(time(NULL)); int soma1=0, soma2=0; Tcarta x1,x2; char ch; int op2; do{ x1.valor=x2.valor=0; x1.naipe=x2.naipe='a'; system("clear"); printf("\n******** Menu do Jogo ************\n\n"); printf("\n1- Pegar Carta\n"); printf("\n2- Nao Pegar uma Carta\n"); printf("\n3- Sair \n"); printf("\nEntre com a sua Opcao: \n"); scanf("%d", &op2); switch (op2){ case 1:{ system("clear"); x1 = pegaCarta(&(*monte)); printf("Voce pegou a carta %d %c\n", x1.valor, x1.naipe); if (soma2==0){ x2 = pegaCarta(&(*monte)); printf("Computador pegou a carta %d %c\n", x2.valor, x2.naipe); soma2 += x2.valor; } else{ int r=rand()%2; if (r==1){ x2 = pegaCarta(&(*monte)); soma2 += x2.valor; printf("Computador pegou a carta %d %c\n", x2.valor, x2.naipe); } else printf("Computador nao pegou uma carta\n"); } soma1 += x1.valor; scanf("%c", &ch); break; } case 2:{ system("clear"); printf("Voce nao pegou uma carta \n"); if (soma2==0){ x2 = pegaCarta(&(*monte)); printf("Computador pegou a carta %d %c\n", x2.valor, x2.naipe); soma2 += x2.valor; } else{ int r=rand()%2; if (r==1){ x2 = pegaCarta(&(*monte)); soma2 += x2.valor; printf("Computador pegou a carta %d %c\n", x2.valor, x2.naipe); } else printf("Computador nao pegou uma carta\n"); } soma1 += x1.valor; scanf("%c", &ch); break; } case 3:{ system("clear"); printf("\nSaindo do Jogo\n"); scanf("%c", &ch); break; } default:{ printf("\nEntre com um valor valido!\n"); scanf("%c", &ch); } } printf("Soma do Jogador 1 (Voce)%d\n", soma1); printf("Soma do Jogador 2 (Computador)%d\n", soma2); scanf("%c", &ch); }while ((soma1 < 21) && (soma2 < 21) && (op2!=3)); if ((soma1>21) && (soma2>21)) printf("O jogo ficou empatado\n"); else if (soma1 > 21){ printf("Voce perdeu esta rodada\n"); (*placar2)++; } else if(soma2 > 21){ printf("Voce ganhou esta rodada\n"); (*placar1)++; } else if(soma1 == 21){ printf("Voce ganhou esta rodada\n"); (*placar1)++; } else if(soma2 == 21){ printf("Voce perdeu esta rodada\n"); (*placar2)++; } else if