Olá, apesar de ter um tópico sobre o assunto não consegui extrair muita coisa dele. Estou desenvolvendo o jogo paciência em C , trabalho da faculdade, e estou com algumas duvidas, principalmente na parte lógica do jogo, para transferir cartas de um vetor para o outro. Se alguém souber alguma maneira de fazer ou citar algo que fiz errado, Agradeço desde já. Modelo: No modo texto, o jogo será manipulado pelas teclas (“+” – baralho), (“*” – última carta virada), (“a”), (“b”), (“c”), (“d”), (“1”), (“2”), (“3”), (“4”), (“5”), (“6”), (“7”). O usuário escolhe a tecla de origem e logo em seguida a tecla de destino. Se for possível mover a carta da origem escolhida para o destino também escolhido, a carta é movida, tanto nas listas quanto na tela. Caso contrário, uma mensagem de erro pode ser dada indicando a impossibilidade da movimentação da carta. Para apenas virar uma carta do baralho, deve-se pressionar a tecla (“*”). No início do jogo, as cartas devem ser geradas aleatoriamente sem se repetir e distribuídas conforme exemplo gráfico já demonstrado (tela gráfica do jogo Paciência). Clique aqui para ver no tamanho original. #include <conio2.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define TF 52
struct tpcarta
{
int num;//1=A, 5=5, J=12...
int naipe; //3=copas, 6=espadas, 4=ouros, 5=paus
int cor; //2=preto, 1=vermelo
};
void criabaralho(tpcarta baralho[TF])
{
int i,j=0,k=0,l=0;
for(i=0;i<=12;i++)
{
baralho[i].num=i+1;
baralho[i].naipe=3;
baralho[i].cor=1;
}
for(i=13;i<=25;i++,j++)
{
baralho[i].num=j+1;
baralho[i].naipe=6;
baralho[i].cor=2;
}
for(i=26;i<=38;i++,k++)
{
baralho[i].num=k+1;
baralho[i].naipe=4;
baralho[i].cor=1;
}
for(i=39;i<=51;i++,l++)
{
baralho[i].num=l+1;
baralho[i].naipe=5;
baralho[i].cor=2;
}
getch();
}
void embaralha(tpcarta baralho[TF])
{
tpcarta aux;
int p,j,i;
for(i=0;i<=100;i++)
{
p=rand()%52;
j=rand()%52;
aux=baralho[p];
baralho[p]=baralho[j];
baralho[j]=aux;
}
printf("%d%c",baralho[0].num,baralho[0].naipe);
getch();
}
void formarvetor(tpcarta baralho[TF], int &TL)
{
int um[13]={0},
dois[13]={1,2},
tres[13]={3,4,5},
quatro[13]={6,7,8,9},
cinco[13]={10,11,12,13,14},
seis[13]={15,16,17,18,19,20},
sete[13]={21,22,23,24,25,26,27},
oito[24]={28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51},
nove[24],
dez[13],
onze[13],
doze[13],
treze[13];
int
TL1=1,
TL2=2,
TL3=3,
TL4=4,
TL5=5,
TL6=6,
TL7=7,
TL8=24,
TL9=0,
TL10=0,
TL11=0,
TL12=0,
TL13=0;
}
void darcartas(tpcarta baralho[TF], int &TL)
{
int c,l,i,op;
for(i=0,c=3,l=10;i<7;i++)
{
gotoxy(c,l);
if(baralho[i].cor==1)
{
if(baralho[i].num==1)
{
textcolor(RED);
printf("A%c",baralho[i].naipe);
}
else
if(baralho[i].num==11)
{
textcolor(RED);
printf("Q%c",baralho[i].naipe);
}
else
if(baralho[i].num==12)
{
textcolor(RED);
printf("J%c",baralho[i].naipe);
}
else
if(baralho[i].num==13)
{
textcolor(RED);
printf("K%c",baralho[i].naipe);
}
else
{
textcolor(RED);
printf("%d%c",baralho[i].num,baralho[i].naipe);}
}
if(baralho[i].cor==2)
{
if(baralho[i].num==1)
{
textcolor(BLACK);
printf("A%c",baralho[i].naipe);
}
else
if(baralho[i].num==11)
{
textcolor(BLACK);
printf("Q%c",baralho[i].naipe);
}
else
if(baralho[i].num==12)
{
textcolor(BLACK);
printf("J%c",baralho[i].naipe);
}
else
if(baralho[i].num==13)
{
textcolor(BLACK);
printf("K%c",baralho[i].naipe);
}
else
{
textcolor(BLACK);
printf("%d%c",baralho[i].num,baralho[i].naipe);
}
}
c=c+8;
}
for(i=0,c=3,l=12;i<7;i++)
{
textcolor(WHITE);
gotoxy(c,l);
printf("(%d)",i+1);
c=c+8;
}
for(i=0,c=7,l=12;i<7;i++)
{
textcolor(BLUE);
gotoxy(c,l);
printf("(%d)",i+1);
c=c+8;
}
for(i=0,c=3,l=2,op=35;i<3;i++)
{ textcolor(WHITE);
gotoxy(c,l);
printf("%c",op);
c=c+1;
}
for(i=0,c=3,l=4,op=43;i<2;i++)
{
gotoxy(c,l);
printf("(%c)",op);
c=c+8;
op--;
}
for(i=0,c=27,l=4,op=97;i<4;i++)
{
gotoxy(c,l);
printf("(%c)",op);
c=c+8;
op++;
}
getch();
}
void esqueleto()
{
int i,c,l,t;
textbackground(GREEN);
clrscr();
for(i=0,c=2,l=2,t=179;i<20;i++)
{
gotoxy(c,l);
printf("%c",t);
c=c+4;
if(i>=3)
{
l=4; c=2;
do{
gotoxy(c,l);
printf("%c",t);
c=c+4;
i++;
}while(i<=6);
}
if(i>=7)
{
c=26; l=2;
do{
gotoxy(c,l);
printf("%c",t);
c=c+4;
i++;
}while(i<=14);
if(i>=15)
{
l=4; c=26;
do{
gotoxy(c,l);
printf("%c",t);
c=c+4;
i++;
}while(i<=22);
}
}
if(i>=22)
{
l=10; c=2;
do{
gotoxy(c,l);
printf("%c",t);
c=c+4;
i++;
}while(i<=36);
}
if(i>=36)
{
l=12; c=2;
do{
gotoxy(c,l);
printf("%c",t);
c=c+4;
i++;
}while(i<=50);
}
}
}
/*char menu(void)
{
return getch();
}
int logica(tpcarta baralho[TF], int TL)
{
int i=0;
char opcao;
do
{
opcao=menu();
switch (opcao)
{
case '+':formarvetor(baralho,TL);break;
case '*':break;
case '1':break;
case '2':break;
case '3':break;
case '4':break;
case '5':break;
case '6':break;
case '7':break;
case 'a':break;
case 'b':break;
case 'c':break;
case 'd':break;
}
} while(i!=0);
}
*/
int main (void)
{
srand(time(NULL));
int vet[TF],TL=0;
tpcarta baralho[TF];
esqueleto();
criabaralho(baralho);
embaralha(baralho);
darcartas(baralho,TL);
formarvetor(baralho,TL);
}