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

pedrix21

Jogo Solitário - Dúvida em vectores

Recommended Posts

pedrix21

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!!


@Pedro Lopes

Share this post


Link to post
Share on other sites
pedrix21

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?


@Pedro Lopes

Share this post


Link to post
Share on other sites
pmg
#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");
}


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
pedrix21

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


@Pedro Lopes

Share this post


Link to post
Share on other sites
pedrix21

#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?


@Pedro Lopes

Share this post


Link to post
Share on other sites
pmg
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';
    }


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
pedrix21

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


@Pedro Lopes

Share this post


Link to post
Share on other sites
pmg

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.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
pedrix21

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

podiam me dar uma ajudinha?

Obrigado.


@Pedro Lopes

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.