Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

colpedrin

Ajuda em jogo em C

Mensagens Recomendadas

colpedrin

Boas, tenho que fazer um programa que simule o jogo de cartas sueca. Eu já consegui baralhar as 40 cartas e dividir para os 4 players. Agora preciso ordenar as cartas por naipe e valor, mas estou com problemas para atribuir os pontos para cada carta. Alguma ideia, exemplo?

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
struct carta{
 char valor[10];
 char naipe[10];
};
typedef struct carta Carta;
char valores[][10]={"As","Dois","Tres","Quatro","Cinco","Seis",
   "Sete","Valete","Dama","Rei"};
char naipes[][10]={"Copas","Espadas","Paus","Ouros"};
void preencherBaralho(Carta baralho[]){          // bem simples, apenas para preencher linearmente mesmo
  int i;
  for(i=0;i<40;i++){
    strcpy(baralho[i].valor,valores[i%10]);
    strcpy(baralho[i].naipe,naipes[i/10]);
      }
}
void embaralharBaralho(Carta baralho[]){        // simples, trocando valor das variáveis das posições i e j
  int i,j;
  Carta aux;
  for(i=0;i<40;i++){
    j=rand()%40;
    aux=baralho[j];
    baralho[j]=baralho[i];
    baralho[i]=aux;
     }
}
void distribuirBaralho(Carta baralho[], Carta player1[], Carta player2[], Carta player3[], Carta player4[]){       // to com um problema aqui, pensando em como separar pra 4 players
  int i;
  Carta aux;
    for(i=0;i<10;i++){
      printf("%7s de %s%c", player1[i].valor,player1[i].naipe,
         (i+1)%3? '\t': '\n');
        }
        for(i=10; i<20; i++){
         printf("%7s de %s%c", player2[i].valor,player2[i].naipe,
         (i+1)%3? '\t': '\n');
  }
  for(i=20; i<30; i++){
         printf("%7s de %s%c", player3[i].valor,player3[i].naipe,
         (i+1)%3? '\t': '\n');
  }
  for(i=30; i<40; i++){
         printf("%7s de %s%c", player4[i].valor,player4[i].naipe,
         (i+1)%3? '\t': '\n');
  }
}
int main(){
 Carta baralho[40], player1[10], player2[10], player3[10], player4[10];
   srand(time(NULL)); // nao sabia que isso era necessario para gerar numeros aleatorios, quebrei a cabeça kk
   preencherBaralho(baralho);
    embaralharBaralho(baralho);
     distribuirBaralho(baralho, player1, player2, player3, player4);
}


Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

antes disso tudo, gostaria que fizesses o seguinte código:

int main(){
 Carta baralho[40], player1[10], player2[10], player3[10], player4[10];

 srand(time(NULL)); // nao sabia que isso era necessario para gerar numeros aleatorios, quebrei a cabeça kk
                    // <---- perguntasses

 preencherBaralho(baralho);
 apresentaBaralho(baralho); // apresenta todas as cartas do balaho

 // ...

 return 0;
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
colpedrin

Ola HappyHippyHippo, nao entendi muito bem o que voce pediu. Poderia explicar?

OBS: Seria isso?

void apresentarBaralho(Carta baralho[]){
int i;
for(i=0; i<40; i++){
printf("%7s de %s%c", baralho[i].valor,baralho[i].naipe,
        (i+1)%3? '\t': '\n');
}
}

Editado por thoga31
Tags code + GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

ok, agora que sabes qual a info que tens em cada carta, tambem sabes que, ao contrário dos números, não tens qualquer tpo de relação entre estas.

(se pensares bem, a dica está na frase anterior)


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.