• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrix21

Jogo Solitário - Dúvida em vectores

13 mensagens neste tópico

Boas pessoal,

estou a começar a fazer em C o jogo solitário.

Pensei colocar um vector para o baralho, vector[52] (52 cartas).

o meu código para preencher o vector com as cartas é:

for(i=0;i<=8;i++)
{
vector[i]=i+2;
}

vector[9]='V';
vector[10]='D';
vector[11]='R';
vector[12]='A';
printf("\n\n");
for(i=0;i<=12;i++)
{
printf("%d\3  ",vector[i]);
}

for(i=13;i<=21;i++)
{
vector[i]=i-11;
}
vector[22]='V';
vector[23]='D';
vector[24]='R';
vector[25]='A';
printf("\n\n");
for(i=13;i<=25;i++)
{
printf("%d\4  ",vector[i]);
}



textcolor(YELLOW);

for(i=26;i<=34;i++)
{
vector[i]=i-24;


}
vector[35]='V';
vector[36]='D';
vector[37]='R';
vector[38]='A';
printf("\n\n");
for(i=26;i<=38;i++)
{
printf("%d\5  ",vector[i]);
}



for(i=39;i<=47;i++)
{
vector[i]=i-37;
}
vector[48]='V';
vector[49]='D';
vector[50]='R';
vector[51]='A';
printf("\n\n");

for(i=39;i<=51;i++)
{

printf("%d\6  ",vector[i]);
}

O problema é que o programa nao imprime o V,D,R,A

Como resolver o problema?

Ou deverá ter uma melhor solução para colocar as cartas num vector?

Boas!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a misturar coisas. Algumas cartas têm o valor como int e outras como char. Ao imprimir, estás a considerar tudo int.

É esse o problema. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais uma duvida surgiu-me...

Fiz isto para facilitar...

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>

int main()
{
   char vector[2]={0};
   int i;
   for(i=0;i<=1;i++)
   {
    vector[i]=i;
    }
   vector[2]='M';

   for(i=0;i<=2;i++)
   {
    printf("%c",vector[i]);
   }
      printf("\n\n");
      system("PAUSE");

}

Agora não dá os numeros...eu queria que desse os numeros e letras =S

Alguem me pode explicar o porque?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tes de usar chars para tudo:

for(i = 0; i <= 8; i++) vector[i] = i + 2 + '0'; // Para obter o char correspondente

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
#include <iostream.h>       /* <iostream.h> não é um header standard */
#include <stdlib.h>
#include <stdio.h>

int main()
{
   char vector[2]={0};      /* vector tem espaço para 2 chars */
   int i;
   for(i=0;i<=1;i++)        /* é mais natural for (i=0; i<2; i++) */
   {
    vector=i;               /* vector é um array. não podes assignar directamente */
    }
   vector[2]='M';           /* vector não tem 3 elementos */
                            /* os dois elementos de vector são */
                            /* vector[0] e vector[1] */

   for(i=0;i<=2;i++)        /* vector só tem 2 elementos */
   {
    printf("%c",vector);    /* vector é um array. não o podes imprimir assim */
   }
      printf("\n\n");
      system("PAUSE");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tes de usar chars para tudo:

for(i = 0; i <= 8; i++) vector[i] = i + 2 + '0'; // Para obter o char correspondente

Coloquei como tu me disseste mas o 10 como char da o simbolo :

=S

Porque o 1 + 0 em ascii da :

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <iostream.h>       /* <iostream.h> não é um header standard */
#include <stdlib.h>
#include <stdio.h>

int main()
{
  char vector[2]={0};      /* vector tem espaço para 2 chars */
  int i;
  for(i=0;i<=1;i++)        /* é mais natural for (i=0; i<2; i++) */
  {
    vector=i;               /* vector é um array. não podes assignar directamente */
    }
  vector[2]='M';           /* vector não tem 3 elementos */
                            /* os dois elementos de vector são */
                            /* vector[0] e vector[1] */

  for(i=0;i<=2;i++)        /* vector só tem 2 elementos */
  {
    printf("%c",vector);    /* vector é um array. não o podes imprimir assim */
  }
      printf("\n\n");
      system("PAUSE");
}

#include <stdlib.h>
#include <stdio.h>

main()
{
   char vector[3];
   char i;
   for(i=0;i<=1;i++)
   {
    vector[i]=i;
    }
   vector[2]='M';

   for(i=0;i<=2;i++)
   {
    printf("%c",vector [i] );
   }
      printf("\n\n");
      system("PAUSE");

}

Assim ta melhor?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Assim ta melhor?

Sim, muito melhor ;)

Dentro do primeiro ciclo for, metes 0 e 1 (valor numérico) em vector[0'] e vector[1].

Depois metes 'M' (no meu computador (e em mais 90% dos computadores existentes) o valor numérico de 'M' é 77) em valor[2].

Porque é que não metes o valor numérico correspondente ao caracter '0' (ou '1') no primeiro ciclo?

Faz como te disse o Ferreira:

   for(i=0;i<=1;i++)
   {
    vector[i]=i+'0';
    }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, muito melhor ;)

Dentro do primeiro ciclo for, metes 0 e 1 (valor numérico) em vector[0] e vector[1].

Depois metes 'M' (no meu computador (e em mais 90% dos computadores existentes) o valor numérico de 'M' é 77) em valor[2].

Porque é que não metes o valor numérico correspondente ao caracter '0' (ou '1') no primeiro ciclo?

Faz como te disse o Ferreira:

   for(i=0;i<=1;i++)
  {
    vector[i]=i+'0';
    }

Eu coloquei e deu correcto...mas foi como expliquei...quando chega ao 10 nao da...ele interpreta como : (2 pontos).

No solitario vai do 2 ao 10 e depois a dama valete etc...

Entendes?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, porque o "10" tem 2 caracteres. É impossível escrevê-lo só com um caracter.

Tens uma solução simples:

tratas o 10 como o Valete ou a Dama e usas '0' ou 'T' (T de "Ten") para representar essa carta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já me disseram para utilizar uma estrutura...isto está dificil de começar...xD

podiam me dar uma ajudinha?

Obrigado.

0

Partilhar esta mensagem


Link 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