Super Truco
Publicado por Celito Gregolon Júnior 27/11/2004
[ Hits: 25.289 ]
Joguinho de truco que demonstra como utilizar arquivos para armazenar dados com comandos simples. Ainda demonstra alguns conceitos básicos de IA (inteligencia artificial)... Muito legal.
/*Jogo de truco em C*/
/*Versão 0.20*/
/*Bibliotecas utilizadas*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*Estados:
0=normal
1=trucado
2=vale seis
3=vale nove
4=vale doze
*/
/*Constantes*/
#define opcoes 4
#define versao 0.20
#define TRUE 1
#define FALSE 0
#define ptsmax 12
#define g "(Gato)"
#define c "(Copas)"
#define e "(Espadilha)"
#define m "(Mole)"
#define truco "truco"
#define seis "seis"
#define nove "nove"
#define doze "doze"
#define vazio "vazio"
#define autor2 "Celito Gregolon J\£nior" /*Ordem alfabética*/
#define autor1 "Carlos Eduardo Weber"
#define autor3 "Ricardo Oenning"
#define part "Partidas"
#define sal "Pontos"
#define jog "Jogador"
#define vit "Vit\¢rias"
/*Variáveis Globais*/
char nome[40]="Design";
int pnts[2];
int pntsrod[2];
int baralho[40];
int matriz[40];
int mao[2][3];
int mesa[2][3];
int cartas[40];
char ranknomes[100][40];
int rankpts[100];
int rankpartidas[100];
int rankvitorias[100];
FILE *fl;
FILE *arq;
int primeiro, virada, turno, rodada, estado, last, saldo, inicial, continua, qly, sorteado, local, npartidas, vitorias;
char status[6][10]={vazio,truco,seis,nove,doze,vazio};
char esp;
/*Funções e procedimentos definidos*/
void embaralha(void);
int sorteia(int max);
void distribui(void);
void pcplay(void);
void jgplay(void);
void atribui(void);
char toon(int card);
char carta(int card);
void save(void);
void pcpensa(void);
void pctruca(void);
void pcordena(void);
void jgtruca(void);
void jogo(void);
void sobre(void);
void rank(void);
/*Principal*/
void main()
{
/*Variáveis locais*/
int opcao, i;
/*Início*/
opcao=opcoes+1;
while (opcao!=opcoes)
{
/* Pede para que o usuário escolha uma opção*/
printf("\n");
printf("************************\n");
printf("O que voc\^ deseja fazer?\n");
printf("\t1 - Jogar truco\n");
printf("\t2 - Ver ranking\n");
printf("\t3 - Sobre...\n");
printf("\t4 - Sair\n");
printf("\nDigite uma op\Æo:");
scanf("%d",&opcao);
strcpy(&status[1],&truco);
strcpy(&status[2],&seis);
strcpy(&status[3],&nove);
strcpy(&status[4],&doze);
/*Verifica possíveis entradas erradas*/
if ((opcao<1)||(opcao>opcoes))
{
printf("\a\n\nVALOR INCORRETO!\n\n");
printf("Por favor escolha uma op\Æo entre 1 e %d\n\n", opcoes);
system("Pause");
}
if (opcao==1)
{
jogo();
}
if (opcao==2)
{
rank();
}
if (opcao==3)
{
sobre();
}
}
}
void sobre(void)
{
/**/ printf("\n\n");
printf("Programa: Super Truco\n>>");
esp=getch();
printf("\nVers\Æo: %3.2f\n>>",versao);
esp=getch();
printf("\nAutores:\n");
printf("\t%s\n",autor1);
printf("\t%s\n",autor2);
printf("\t%s\n>>",autor3);
esp=getch();
printf("\nComent\ rios\n");
printf("\t Este programa foi feito em novembro de 2004 como trabalho\n");
printf("\tde conclus\Æo da disciplina de Processamento de Dados (PRD) da \n");
printf("\t3\¦ fase do curso de Engenharia El\`trica da Universidade do Estado\n");
printf("\tde Santa Catarina (UDESC).\n>>");
esp=getch();
}
void rank(void)
{
char car;
int i;
if ((arq=fopen("rank.txt","r"))==NULL)
{
arq=fopen("Rank.txt","w");
for (i=0; i<100; i++)
fprintf(arq,"%s %d %d %d\n",vazio,0,0,0);
fclose(arq);
arq=fopen("rank.txt","r");
}
printf("\n");
printf(" Rank -%15s\t%10s\t%8s%10s\n\n",jog,part,vit,sal);
for (i=0; i<10; i++)
{
fscanf(arq,"%s%d%d%d",ranknomes[i],&rankpartidas[i],&rankvitorias[i],&rankpts[i]);
printf("%3d -%15s\t%8d\t%5d\t%9d\n",i+1,ranknomes[i],rankpartidas[i],rankvitorias[i],rankpts[i]);
}
printf("\n");
system("Pause");
fclose(arq);
if ((strcmp(&ranknomes[0],&vazio))!=0)
{
car='a';
while ((car!='s')&&(car!='n'))
{
printf("\nVoc\^ deseja limpar a lista?(s/n)\n");
scanf("%s",&car);
if (car=='s')
{
arq=fopen("Rank.txt","w");
for (i=0; i<100; i++)
fprintf(arq,"%s %d %d %d\n",vazio,0,0,0);
printf("Lista limpa!\n\n");
system("Pause");
}
fclose(arq);
}
}
}
void jogo(void)
{
char ch[5], tipo[40], car;
int i, primeira, vale, naipe0, naipe1, valor;
srand(time(NULL));
for (i=0; i<40; i++)
matriz[i]=39-i;
/*Pede o nome do jogador*/
printf("\n\nDigite seu nome:");
scanf("%s",&nome);
pnts[0]=0;
pnts[1]=0;
primeiro=sorteia(2);
rodada=0;
vitorias=0;
npartidas=0;
saldo=0;
while ((pnts[0]<ptsmax)&&(pnts[1]<ptsmax))
{
/*embaralha as cartas*/
embaralha();
/*Distribui as cartas entre os jogadores*/
distribui();
/*Atribui uma pontuação as cartas para fins de comparação do valor das mesmas*/
atribui();
pntsrod[0]=0;
pntsrod[1]=0;
inicial=primeiro;
turno=-1;
estado=0;
vale=0;
last=2;
local=1;
sorteado=sorteia(40);
while ((pntsrod[0]<2)&&(pntsrod[1]<2))
{
printf("\n***********************************\n");
turno=turno+1;
mesa[1][turno]=-1;
/*Os jogadores jogam as cartas*/
pcordena();
continua=TRUE;
if ((pnts[0]==11)&&(pnts[1]==11))
{
printf("\n\t*** Escurinha! ***\n");
}
if (inicial==0)
{
if (((pnts[0]==11)&&(pnts[1]<11))&&(turno==0))
{
printf("Pc est\ com m\Æo de 11.\n>>");
esp=getch();
if (qly<45)
{
printf("\nPc correu.\n>>");
pntsrod[1]=3;
continua=FALSE;
}
else
{
printf("\nPc aceitou.\n>>");
estado=1;
last=-1;
}
esp=getch();
}
if (((pnts[1]==11)&&(pnts[0]<11))&&(turno==0))
{
printf("Voc\^ est\ com m\Æo de 11.\n>>");
esp=getch();
printf("\nVirada: %c %c\n",carta(virada),toon(virada));
printf("\nSua m\Æo \`:\n");
for (i=0; i<3; i++)
{
tipo[0]='{FONTE}';
if (cartas[mao[1][i]]==13)
strcpy(&tipo,&g);
if (cartas[mao[1][i]]==12)
strcpy(&tipo,&c);
if (cartas[mao[1][i]]==11)
strcpy(&tipo,&e);
if (cartas[mao[1][i]]==10)
strcpy(&tipo,&m);
printf("%c %c %s\n",carta(mao[1][i]),toon(mao[1][i]),tipo);
}
car='a';
while ((car!='s')&&(car!='n'))
{
printf("Voc\^ aceita?(s/n)");
scanf("%s",&car);
}
if (car=='n')
{
pntsrod[0]=3;
continua=FALSE;
}
else
{
estado=1;
last=-1;
}
}
if (continua==TRUE)
pctruca();
if (continua==TRUE)
pcplay();
local=2;
if (continua==TRUE)
jgtruca();
if (continua==TRUE)
jgplay();
}
else
{
if (((pnts[0]==11)&&(pnts[1]<11))&&(turno==0))
{
printf("Pc est\ com m\Æo de 11.\n>>");
esp=getch();
if (qly<60)
{
printf("\nPc correu.\n>>");
pntsrod[1]=3;
continua=FALSE;
}
else
{
printf("\nPc aceitou.\n>>");
estado=1;
last=-1;
}
esp=getch();
}
if (((pnts[1]==11)&&(pnts[0]<11))&&(turno==0))
{
printf("Voc\^ est\ com m\Æo de 11.\n>>");
esp=getch();
printf("\nVirada: %c %c\n",carta(virada),toon(virada));
printf("\nSua m\Æo \`:\n");
for (i=0; i<3; i++)
{
tipo[0]='{FONTE}';
if (cartas[mao[1][i]]==13)
strcpy(&tipo,&g);
if (cartas[mao[1][i]]==12)
strcpy(&tipo,&c);
if (cartas[mao[1][i]]==11)
strcpy(&tipo,&e);
if (cartas[mao[1][i]]==10)
strcpy(&tipo,&m);
printf("%c %c %s\n",carta(mao[1][i]),toon(mao[1][i]),tipo);
}
car='a';
while ((car!='s')&&(car!='n'))
{
printf("Voc\^ aceita?(s/n)");
scanf("%s",&car);
}
if (car=='n')
{
pntsrod[0]=3;
continua=FALSE;
}
else
{
estado=1;
last=-1;
}
}
local=1;
if (continua==TRUE)
jgtruca();
if (continua==TRUE)
jgplay();
if (continua==TRUE)
pctruca();
if (continua==TRUE)
pcplay();
}
if ((pntsrod[0]<2)&&(pntsrod[1]<2))
{
/*Avalia o resultado do turno*/
if (cartas[mesa[0][turno]]>cartas[mesa[1][turno]])
{
inicial=0;
if ((vale==1)||(vale==2))
pntsrod[0]=3;
else
pntsrod[0]++;
if (turno==0)
primeira=0;
printf("\nPc levou este turno.\n>>");
}
if (cartas[mesa[0][turno]]<cartas[mesa[1][turno]])
{
inicial=1;
if ((vale==1)||(vale==2))
pntsrod[1]=3;
else
pntsrod[1]++;
if (turno==0)
primeira=1;
printf("\nVoc\^ levou este turno.\n>>");
}
if (cartas[mesa[0][turno]]==cartas[mesa[1][turno]])
{
if (turno==0)
{
vale=1;
printf("\nTurno empatado.\n>>");
}
if (turno==1)
if (vale==0)
{
pntsrod[primeira]=3;
printf("\nTurno empatado.\n>>");
}
else
{
vale=2;
printf("\nTurno empatado.\n>>");
}
if (turno==2)
{
if (vale==2)
{
naipe0=(int)(mesa[1][3]/10);
naipe1=(int)(mesa[1][3]/10);
if (naipe0>naipe1)
{
pntsrod[0]=3;
printf("\nTurno empatado.\n>>");
}
else
{
pntsrod[1]=3;
printf("\nTurno empatado.\n>>");
}
}
else
{
pntsrod[primeira]=3;
printf("\nTurno empatado.\n>>");
}
}
}
esp=getch();
}
}
printf("\n***********************************\n");
valor=estado*3;
if (estado==0)
valor=1;
if (pntsrod[0]>=2)
{
if (pnts[0]==11)
valor=1;
pnts[0]=pnts[0]+valor;
if (valor==1)
printf("\nPc ganhou 1 ponto\n");
else
printf("\nPc ganhou %d pontos\n",valor);
printf("\n***********************************\n");
}
if (pntsrod[1]>=2)
{
if (pnts[1]==11)
valor=1;
if (valor==1)
printf("\nVoc\^ ganhou 1 ponto\n");
else
printf("\nVoc\^ ganhou %d pontos\n",valor);
pnts[1]=pnts[1]+valor;
printf("\n***********************************\n");
}
esp=getch();
if (pnts[0]>12)
pnts[0]=12;
if (pnts[1]>12)
pnts[1]=12;
printf("\n\tPLACAR PARCIAL\n");
printf("\t---------------------\n\t Pc = %d\n",pnts[0]);
printf("\t---------------------\n\t %s = %d\n",nome,pnts[1]);
printf("\t---------------------\n");
printf(">>");
esp=getch();
if ((pnts[0]>=ptsmax)||(pnts[1]>=ptsmax))
{
if (pnts[0]>=ptsmax)
{
npartidas++;
saldo=pnts[1]-ptsmax;
printf("\n\n\tVOC\Ò PERDEU!!!\n\n");
}
if (pnts[1]>=ptsmax)
{
vitorias++;
npartidas++;
saldo=ptsmax-pnts[0];
printf("\n\n\tVOC\Ò GANHOU!!!\n\n");
}
system("Pause");
}
if (primeiro==0)
primeiro++;
else
primeiro--;
rodada++;
}
save();
}
void embaralha(void)
{
int num, i, j, k;
char ch[2];
for (i=0; i<40; i++)
{
num=sorteia(40-i);
baralho[i]=matriz[num];
for (j=num; j<(39); j++)
matriz[j]=matriz[j+1];
}
for (i=0; i<40; i++)
matriz[i]=baralho[i];
}
int sorteia(int max)
{
return ((int)max*rand()/(RAND_MAX+1));
}
void distribui(void)
{
int a, b, i;
for (a=0; a<3; a++)
{
for (b=0; b<2; b++)
{
mao[b][a]=baralho[a*2+b];
}
}
virada=baralho[6];
printf("\n***********************************\n");
printf("Rodada %2d",rodada+1);
printf("\n>>");
esp=getch();
if (primeiro==0)
printf("\nPc come\
>>");
else
printf("\nVoc\^ come\
>>");
printf("");
esp=getch();
}
void pcplay(void)
{
int num, i, j, wx, ql, jogou, valormao;
char tipo[40];
/*Pc escolhe carta para jogar*/
if (inicial==0)
{
if ((pntsrod[0]==0)&&(turno>0))
{
if (cartas[mao[0][1]]>6)
num=sorteia(3-turno);
else
num=0;
}
else
num=sorteia(3-turno);
}
if ((pnts[0]==11)||(pnts[1]==11))
num=sorteia(3-turno);
if (inicial==1)
{
jogou=FALSE;
for (i=(2-turno); i>=0; i--)
{
if ((cartas[mao[0][i]]>cartas[mesa[1][turno]])&&(jogou==FALSE))
{
num=i;
jogou=TRUE;
}
}
if (jogou==FALSE)
for (i=(2-turno); i>=0; i--)
{
if ((cartas[mao[0][i]]>cartas[mesa[1][turno]])&&(jogou==FALSE))
{
num=i;
jogou=TRUE;
}
}
if (jogou==FALSE)
num=2-turno;
if ((pntsrod[0]==pntsrod[1])&&(turno!=0))
num=0;
}
tipo[0]='{FONTE}';
mesa[0][turno]=mao[0][num];
for (i=num; i<(2-turno); i++)
mao[0][i]=mao[0][i+1];
if (cartas[mesa[0][turno]]==13)
strcpy(&tipo,&g);
if (cartas[mesa[0][turno]]==12)
strcpy(&tipo,&c);
if (cartas[mesa[0][turno]]==11)
strcpy(&tipo,&e);
if (cartas[mesa[0][turno]]==10)
strcpy(&tipo,&m);
printf("\nPc jogou: %c %c %s\n",carta(mesa[0][turno]),toon(mesa[0][turno]),tipo);
printf(">>");
esp=getch();
}
void jgplay(void)
{
int num, i, vle;
char tipo[40];
num=10;
while ((num<0)||(num>(2-turno)))
{
printf("\nVirada: %c %c\n",carta(virada),toon(virada));
if ((pnts[0]==11)&&(pnts[1]==11))
{
printf("\nQue carta voc\^ quer jogar?(1");
for (i=1; i<(3-turno); i++)
printf("/%d",i+1);
printf(")\n");
scanf("%d",&num);
num--;
}
else
{
printf("\nQue carta voc\^ quer jogar?\n");
for (i=0; i<(3-turno); i++)
{
tipo[0]='{FONTE}';
if (cartas[mao[1][i]]==13)
strcpy(&tipo,&g);
if (cartas[mao[1][i]]==12)
strcpy(&tipo,&c);
if (cartas[mao[1][i]]==11)
strcpy(&tipo,&e);
if (cartas[mao[1][i]]==10)
strcpy(&tipo,&m);
printf("%d - %c %c %s\n",i+1,carta(mao[1][i]),toon(mao[1][i]),tipo);
}
scanf("%d",&num);
num--;
}
if ((num<0)||(num>(2-turno)))
{
printf("\a\n\tVALOR INCORRETO!!\n");
printf("\nDigite sua op\Æo entre 0 e %d\n",(2-turno));
system("Pause");
}
else
{
tipo[0]='{FONTE}';
if (cartas[mao[1][num]]==13)
strcpy(&tipo,&g);
if (cartas[mao[1][num]]==12)
strcpy(&tipo,&c);
if (cartas[mao[1][num]]==11)
strcpy(&tipo,&e);
if (cartas[mao[1][num]]==10)
strcpy(&tipo,&m);
printf("Voc\^ jogou: %c %c %s\n",carta(mao[1][num]),toon(mao[1][num]),tipo);
printf(">>");
}
esp=getch();
}
mesa[1][turno]=mao[1][num];
for (i=num; i<(2-turno); i++)
mao[1][i]=mao[1][i+1];
}
void atribui(void)
{
int vle, a, i, j, card;
if ((virada%10)<9)
{
card=(virada%10)+1;
}
else
card=0;
vle=0;
for (i=0; i<4; i++)
{
vle=0;
for (j=0; j<10; j++)
{
if (card==j)
cartas[10*i+j]=10+i;
else
{
cartas[10*i+j]=vle;
vle=vle+1;
}
}
}
}
char toon(int card)
{
int vle, x;
vle=(int)(card/10);
if (vle==0)
x=4;
if (vle==1)
x=6;
if (vle==2)
x=3;
if (vle==3)
x=5;
return ("%c",x);
}
char carta(int card)
{
int vle;
char x;
vle=card%10;
if (vle>7)
x=("\c",42+vle);
if (vle==7)
x='A';
if (vle==6)
x='K';
if (vle==5)
x='J';
if (vle==4)
x='Q';
if (vle<4)
x=("%c",52+vle);
return x;
}
void save(void)
{
int i, pos, njogadores, pontos, j;
char nm[40];
/*Abre o arquivo para leitura, se existir*/
if ((arq=fopen("Rank.TXT","r"))!=NULL)
{
/*Obtem os nomes e a pontuação*/
for (i=0; i<100; i++)
{
fscanf(arq,"%s%d%d%d",&ranknomes[i],&rankpartidas[i],&rankvitorias[i],&rankpts[i]);
}
}
/*senão, o cria*/
else
{
arq=fopen("Rank.txt","w");
for (i=0; i<100; i++)
{
fprintf(arq,"%s %d %d %d\n",vazio,0,0,0);
strcpy(&ranknomes[i],&vazio);
rankpartidas[i]=0;
rankvitorias[i]=0;
rankpts[i]=0;
}
}
/*fecha o arquivo*/
fclose(arq);
/*procura o nome e conta o número de jogadores na lista*/
njogadores=0;
pos=-1;
i=0;
while ((pos==-1)||(i==njogadores))
{
if (strcmp(&ranknomes[i],&nome)==0)
pos=i;
if ((pos==-1)&&(i==99))
pos=100;
if (strcmp(&ranknomes[i],&vazio)!=0)
njogadores++;
i++;
}
/*se encontrar, acrescenta ou diminui seus pontos*/
if (pos<100)
{
rankpartidas[pos]=rankpartidas[pos]+npartidas;
rankpts[pos]=rankpts[pos]+saldo;
rankvitorias[pos]=rankvitorias[pos]+vitorias;
}
/*senão, adiciona-lhe ao final da lista*/
else
{
njogadores++;
rankpartidas[njogadores-1]=npartidas;
rankvitorias[njogadores-1]=vitorias;
rankpts[njogadores-1]=saldo;
strcpy(&ranknomes[njogadores-1],&nome);
}
/*ordena a lista em forma decrescente*/
for (i=0; i<(njogadores-1); i++)
{
for (j=0; j<(njogadores-1); j++)
{
if (rankvitorias[j]<rankvitorias[j+1])
{
pontos=rankpts[j];
rankpts[j]=rankpts[j+1];
rankpts[j+1]=pontos;
pontos=rankvitorias[j];
rankvitorias[j]=rankvitorias[j+1];
rankvitorias[j+1]=pontos;
pontos=rankpartidas[j];
rankpartidas[j]=rankpartidas[j+1];
rankpartidas[j+1]=pontos;
strcpy(&nm,&ranknomes[j]);
strcpy(&ranknomes[j],&ranknomes[j+1]);
strcpy(&ranknomes[j+1],&nm);
}
else
{
if (rankvitorias[j]==rankvitorias[j+1])
{
if (rankpts[j]<rankpts[j+1])
{
pontos=rankpts[j];
rankpts[j]=rankpts[j+1];
rankpts[j+1]=pontos;
pontos=rankvitorias[j];
rankvitorias[j]=rankvitorias[j+1];
rankvitorias[j+1]=pontos;
pontos=rankpartidas[j];
rankpartidas[j]=rankpartidas[j+1];
rankpartidas[j+1]=pontos;
strcpy(&nm,&ranknomes[j]);
strcpy(&ranknomes[j],&ranknomes[j+1]);
strcpy(&ranknomes[j+1],&nm);
}
else
{
if (rankpts[j]==rankpts[j+1])
{
if (rankpartidas[j]<rankpartidas[j+1])
{
pontos=rankpts[j];
rankpts[j]=rankpts[j+1];
rankpts[j+1]=pontos;
pontos=rankvitorias[j];
rankvitorias[j]=rankvitorias[j+1];
rankvitorias[j+1]=pontos;
pontos=rankpartidas[j];
rankpartidas[j]=rankpartidas[j+1];
rankpartidas[j+1]=pontos;
strcpy(&nm,&ranknomes[j]);
strcpy(&ranknomes[j],&ranknomes[j+1]);
strcpy(&ranknomes[j+1],&nm);
}
}
}
}
}
}
}
/*recria o arquivo para escrita*/
if ((arq=fopen("Rank.txt","w"))==NULL)
{
printf("\n\aErro de leitura.\nO arquivo 'Rank.Txt' pode estar corrompido ou danificado.\n");
}
else
{
/*escreve os dados da lista*/
for (i=0; i<100; i++)
{
fprintf(arq,"%s %d %d %d\n",ranknomes[i],rankpartidas[i],rankvitorias[i],rankpts[i]);
}
}
/*fecha o arquivo*/
fclose(arq);
}
void pcpensa(void)
{
int i, valormao;
valormao=0;
for (i=0; i<(3-turno); i++)
valormao=valormao+cartas[mao[0][i]];
qly=3*valormao;
if (turno==0)
{
if (inicial==1)
{
for (i=0; i<3; i++)
if (cartas[mao[0][i]]>cartas[mesa[1][0]])
qly=qly+5;
if (qly==(3*valormao))
{
qly=25+sorteia(50); /*Facão*/
}
}
}
if (turno==1)
{
if (pntsrod[0]==1)
{
qly=5*valormao;
if (cartas[mesa[0][1]]==-1)
{
if (cartas[mao[0][0]]>=10)
qly=60;
if (cartas[mao[9][1]]>=8)
qly=qly+20;
}
else
{
if (cartas[mesa[0][1]]>=11)
qly=65;
if (cartas[mao[0][1]]>=9)
qly=90;
}
if (cartas[mao[0][0]]==13)
qly=100;
}
if (pntsrod[1]==1)
{
if (cartas[mao[0][0]]<cartas[mesa[1][1]])
{
qly=30+sorteia(50); /*Facão*/
}
else
{
if (cartas[mao[0][1]]<cartas[mesa[1][1]])
{
qly=20+sorteia(50); /*Facão*/
}
else
{
qly=4*valormao+sorteado;
}
}
}
else
{
qly=6*cartas[mao[0][0]]+2*cartas[mao[0][1]]+sorteado;
}
}
if (turno==2)
{
if (inicial==1)
{
if (cartas[mao[0][0]]>cartas[mesa[1][2]])
{
qly=100;
}
else
{
if ((cartas[mao[0][0]]==cartas[mesa[1][2]])&&(cartas[mesa[0][0]]>cartas[mesa[1][0]]))
{
qly=100;
}
else
{
qly=30+sorteia(60); /*Facão*/
}
}
}
if (cartas[mao[0][0]]==13)
qly=100;
}
}
void pctruca(void)
{
int num, i;
char tipo[40];
pcpensa();
if (((pnts[0]<11)&&(pnts[1]<11))&&(((last==1)||(last==2))&&(estado<4)))
{
if (qly>(50+sorteia(20)+estado*8))
{
printf("\nPc pediu %s.\n>>",status[estado+1]);
esp=getch();
printf("\nVirada: %c %c\n",carta(virada),toon(virada));
printf("\nSua m\Æo \`:\n");
if (mesa[1][turno]==-1)
{
for (i=0; i<(3-turno); i++)
{
tipo[0]='{FONTE}';
if (cartas[mao[1][i]]==13)
strcpy(&tipo,&g);
if (cartas[mao[1][i]]==12)
strcpy(&tipo,&c);
if (cartas[mao[1][i]]==11)
strcpy(&tipo,&e);
if (cartas[mao[1][i]]==10)
strcpy(&tipo,&m);
printf("%c %c %s\n",carta(mao[1][i]),toon(mao[1][i]),tipo);
}
}
else
{
for (i=0; i<(2-turno); i++)
{
tipo[0]='{FONTE}';
if (cartas[mao[1][i]]==13)
strcpy(&tipo,&g);
if (cartas[mao[1][i]]==12)
strcpy(&tipo,&c);
if (cartas[mao[1][i]]==11)
strcpy(&tipo,&e);
if (cartas[mao[1][i]]==10)
strcpy(&tipo,&m);
printf("%c %c %s\n",carta(mao[1][i]),toon(mao[1][i]),tipo);
}
}
printf("Digite:\n1 - Aceitar;\n2 - Correr\n");
if (estado<3)
printf("3 - Pedir '%s'\n",status[estado+2]);
scanf("%d",&num);
if (num==1)
{
estado++;
last=0;
}
if (num==2)
{
continua=FALSE;
pntsrod[0]=3;
}
if (num==3)
{
last=0;
estado++;
local=0;
jgtruca();
}
}
}
}
void pcordena(void)
{
int i, j, wx;
/*Ordena as cartas do pc no primeiro turno*/
if (turno==0)
{
for (i=0; i<2; i++)
for (j=0; j<2; j++)
if (cartas[mao[0][j]]<cartas[mao[0][j+1]])
{
wx=mao[0][j];
mao[0][j]=mao[0][j+1];
mao[0][j+1]=wx;
}
}
}
void jgtruca(void)
{
char car;
char tipo[40];
int cont, i, num;
if (((pnts[0]<11)&&(pnts[1]<11))&&(((last==0)||(last==2))&&(estado<4)))
{
cont=TRUE;
if (local!=0)
{
printf("\nVirada: %c %c",carta(virada),toon(virada));
printf("\nSua m\Æo \`:\n");
for (i=0; i<(3-turno); i++)
{
tipo[0]='{FONTE}';
if (cartas[mao[1][i]]==13)
strcpy(&tipo,&g);
if (cartas[mao[1][i]]==12)
strcpy(&tipo,&c);
if (cartas[mao[1][i]]==11)
strcpy(&tipo,&e);
if (cartas[mao[1][i]]==10)
strcpy(&tipo,&m);
printf("%c %c %s\n",carta(mao[1][i]),toon(mao[1][i]),tipo);
}
num=0;
while ((num!=1)&&(num!=2))
{
printf("\nVoc\^ quer pedir %s?\n",status[estado+1]);
printf("1 - Sim\n");
printf("2 - N\Æo\n");
scanf("%d",&num);
}
if (num==2)
cont=FALSE;
}
if (cont==TRUE)
{
pcpensa();
if ((qly>(sorteia(10)+(estado+1)*8+40))&&((qly<(sorteia(10)+(estado+2)*8+40)))||(estado>2))
{
estado++;
last=1;
printf("\nPc aceitou!\n>>");
esp=getch();
}
else
{
if ((qly>(sorteia(10)+(estado+2)*8+40))&&(estado<3))
{
estado++;
last=1;
printf("\nPc aceitou!\n>>");
esp=getch();
pctruca();
}
else
{
continua=FALSE;
pntsrod[1]=3;
printf("\nPc correu!\n>>");
esp=getch();
}
}
}
}
}
Cadastor de Produtos em C e metodos ordenação
dog - semelhante ao cat do Linux
ORDENACAO PELO METODO SHELLSORT
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (14)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









