Ir ao conteúdo
  • Cadastre-se

Victor.main

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

posts postados por Victor.main

  1. Boa Noite!

    Meu Deus cada coisa que aparece nesse meu trabalho! Estou fazendo um jogo-senha para o usuário adivinhar uma senha gerada pelo computador. Essa senha é composta por cores com seus nomes abreviados (vm = vermelho, az = azul..). O usuário que escolhe os parâmetros do jogo, tais como tamanho de senha (variável n) e tal... Caso o usuário acerte a cor na posição certa (mesma posição gerada pelo computador) deve ser mostrado na tela o caractere '@', se tiver acertado, mas na posição errada, deve ser mostrado '!'.

    Porém, o usuario pode entrar cores repetidas, da mesma forma que o computador pode gerar senhas repetidas. Daí, por exemplo, se o computador gerar a senha vd, vm, vd, vd e o usuário entrar com vd, vm, am, vm a saída deve ser @@.

     

    Maaas.. meu código tá dando o seguinte: @@!

    //Comparar jogada do usuario com jogada do computador  for(i=0; i<n; i++){    cont=0;    if(strcmp(vs[i], jog[i]) == 0){      printf("@");    }    else{      for(j=1; j<n; j++){        if((strcmp(jog[i], vs[j]) == 0) && (cont<2)){            printf("!");            cont = cont++;        }      }    }  }

    Eu sei onde está o erro mas passei horas tentando resolver e não achei uma solução...

    vs é onde guardo as jogadas do computador. jog onde estão as jogadas do usuário.

  2. Boa noite!

    Estou quase terminando meu trabalho: criar um jogo de senha usando cores... Como parte interativa do projeto, devo usar cores de verdade nas palavras utilizando uma biblioteca cores.h como no exemplo:

     

    (Para cada cor que o usuário digitou, 'o' deve sair colorido. Cada cor é representada por abreviações)

     

    Digite sua jogada: vm, vd, am, az

     

    o o o o

     

    Mas faço o seguinte código e aparece vários o's de cores quase aleatórias... não sei porque...

    for(i=0; i<n; i++) {    printf("%s, ", vs[i]);    if (strcmp(jog[i], "vm")){      printf("%so ", COR_VERMELHO);    }    if (strcmp(jog[i], "vd")){      printf("%so ", COR_VERDE);      }      if (strcmp(jog[i], "am")) {      printf("%so ", COR_AMARELO);    }      if (strcmp(jog[i], "az")) {      printf("%so ", COR_AZUL);       }    if (strcmp(jog[i], "mg")) {      printf("%so ", COR_MAGENTA);    }    if (strcmp(jog[i], "ci")){      printf("%so ", COR_CIANO);      }  }

    vs é o vetor onde estou guardando as jogadas do usuario... A biblioteca cores.h é a seguinte (estou desconfiando que não estou sabendo usar...

    #ifndef __CORES_TRABALHO#define COR_NORMAL      "\x1B[0m"#define COR_VERMELHO      "\x1B[31m"#define COR_VERDE       "\x1B[32m"#define COR_AMARELO      "\x1B[33m"#define COR_AZUL        "\x1B[34m"#define COR_MAGENTA     "\x1B[35m"#define COR_CIANO       "\x1B[36m"#define COR_BRANCO      "\x1B[37m"#define COR_PRETO       "\x1B[30m"#define FUNDO_PRETO     "\x1B[40m"#define FUNDO_VERMELHO    "\x1B[41m"#define FUNDO_VERDE     "\x1B[42m"#define FUNDO_AMARELO    "\x1B[43m"#define FUNDO_AZUL      "\x1B[44m"#define FUNDO_MAGENTA    "\x1B[45m"#define FUNDO_CIANO     "\x1B[46m"#define FUNDO_BRANCO    "\x1B[47m"#define FUNDO_NORMAL    "\x1B[49m"#define __CORES_TRABALHO#endif/**********************  EXEMPLO DE UTILIZAÇÃO printf("Entre a sua jogada, composta de cinco cores separadas por vírgula, usando o código a seguir:\n%s - vm = vermelho\n%s - vd = verde\n%s - am = amarelo\n%s - az = azul\n%s - mg = magenta\n%s - cn = ciano\n\n%sEntre sua jogada: ", COR_VERMELHO, COR_VERDE, COR_AMARELO, COR_AZUL, COR_MAGENTA, COR_CIANO, COR_NORMAL);  */
  3. Bom dia!

     

    Preciso fazer um jogo senha onde o usuario entre com cores e tente acertar as cores escolhidas aleatoriamente pelo computador. A entrada do usuario deve ser na seguinte forma: "vd,az,mg,vm" onde cada abreviação corresponde a uma cor (vm = vermelho, az = azul etc.)

    como o usuario também estipula os parametros da partida (numero de opções de cores, numero de jogadas...) estou usando alocação dinâmica de memória. Já criei o vetor com as cores aleatorias do computador, mas agr falta armazenar em outro vetor as cores jogadas pelo usuario!

     

    Tentei fazer um teste so com a primeira cor.. e não consigo usar strcpy ou strcat... Some help, please?

     

      char *entrada;
      entrada = (char*)malloc((n*4)-1); //aloca espaço suficiente para armazenar a senha
      scanf(" %[^\n]s", entrada); //aceita entrada do usuario com espaços

    //Armazenando jogada em vetor
      char **vd; // vd = vetor digitado
      vd = (char**)malloc(sizeof(char*) * n);
      for (i=0; i<n; i++){ // alocando vetor de n posições para as n jogadas entradas
        vd = (char*)malloc(3);
      }
      for(i=0; i<2; i++){
        strcpy(vd[1], "vm");
      }
     

    PS: Sou iniciante nesse fórum.. n sei colocar o código daquela outra forma, se pudeem me explicar isso também agradeceria rsrs

  4. Nesse caso você vai ter que criar uma matriz, usando ponteiro de ponteiro, para alocar a quantidade de palavras e depois a quantidade de caracteres.

    Por exemplo,

     

    char **vs;..vs = (char**)malloc(sizeof(char*) * 6));..vs[i] = (char*)malloc(3);..strcpy(vs[0], "vm");strcpy(vs[1], "vd");

    Obrigado! Compilou tudo certinho mas dá uma falha de segmentação ao final... Nesse trecho de código vocÊ usa o 6 como sendo o número de palavras e o 3 comop sendo a quantidade de caracteres?

    Porque troquei as variáveis para n e char * 2 (já que as abreviações das cores são todas com 2 caracteres..

     

    char **vs;

      vs = (char**)malloc(sizeof(char*) * n);

      vs = (char*)malloc(sizeof(char)*2);

      for (i=1; i<=n; i++) {

        ran = rand()%(pc-1);

        switch(ran) {

          case 0:

               strcpy(vs[0], "vm");

               break;

          case 1:

               strcpy(vs[1], "vd");

               break;

     

    .

    .

    .

  5. Bom dia pessoal.
    Estou com um trabalho bem grandinho pra fazer, sobre um jogo de senhas envolvendo cores, onde o computador terá que criar uma senha e o usuário entrar com uma. Ai deverá ser mostrado os acertos e tal..
    Porém, nesse jogo o usuário deverá entrar com os parâmetros, por exemplo, o número de cores disponíveis, o tamanho da senha, o limite de jogadas... E, por isso, o programa deve ser feito consumindo o minimo de memória possivel. Pra isso, malloc!
    Mas me surgiu uma dúvida sobre como estou usando a função errada. Vou explicar, no jogo, as cores são representadas por abreviações (vermelho = vm, azul = az...). Ai ao criar o vetor char de duas posições para armazenar as cores.. surgiu ma dúvida: Precisarei criar um vetor contendo vetores do tipo char[2] para armazenar as jogadas???
     
    Parte do meu código:

     

      //n = tamanho de senha
      //pc = posibilidade de cores
      //lim = limite de jogadas
      //ran = numero "randômico"
      int n, pc, lim, ran, i;  
      char *vs; //vs = vetor sorteado
      printf("Qual o Tamanho de Senha Desejado? (de 4 a 12) ");
      scanf("%d\n", &n);
      while ((n < 4) || (n > 12)) {
        printf("Tamanho incorreto, por favor, digite um número entre 4 e 12: ");
        scanf("%d\n", &n);
      }
      printf("Qual o Número de Possibilidades de Cores Desejado? (de 3 a 6) ");    
      scanf("%d\n", &pc);
      while ((pc < 3) || (pc > 6)) {
        printf("Número incorreto, por favor, digite um número entre 3 e 6: ");
        scanf("%d\n", &pc);
      }
      printf("Qual o  Limite de tentativas de adivinhação? (a partir de 1)");
      scanf("%d\n", &lim);
      while (lim < 1) {
        printf("Número incorreto, por favor, digite um número acima de 1: ");
        scanf("%d\n", &lim);
      }
    //Criando a senha sorteada pelo computador
      vs = (char *)malloc(n*sizeof(2));
      for (i=0; i<=(n-1); i++) {
        ran = rand()%(pc-1);
        switch(ran) {
          case 0:
               vs = "vm";
               break;
          case 1:
               vs = "vd";
               break;
          case 2:
               vs = "am";
               break;
          case 3:
               vs = "az";
               break;
          case 4:
               vs = "mg";
               break;
          case 5:
               vs = "ci";
               break;
        }
      }
     

  6. Postado Hoje, 15h41min
    Claro que sim, talvez so poderei a noite ja que ainda estou na faculdade..

    UPDATE
    Olá de novo! Surgiram mais dúvidas hehe... Nunca usei nada com arquivo texto e meu professor não explicou nada disso (queria que a gente pesquisasse e aprendesse cada um por si). Então estou meio perdido até mesmo quanto à declaração das variáveis. Bom, aí está parte do meu código:

    Program read_arq;var  arq : text; j, j1, j2 : String;  x, y: integer;  v : array[1..2,1..2] of integer;function Copy(S: string; Ind: integer; Cont: integer);  Begin  if (ParamCount = 1) then    Begin    Assign(Entrada,ParamStr(1));    Reset(Entrada);    while not eof(Entrada) do      Begin      readln(Entrada,j);      for x := 1 to Lenght(j) do        Begin        if j[x] = '/' then          Begin          for y := 1 to Lenght(x-1) do            jog1 := Copy(j, y);          for y := Lenght(x+1) to Lenght(j) do            jog2 := Copy(j, y);          End;        End; {Comandos para testar as entradas}      End;    End;  End;

    Não consegui "formatar" o outro texto (internet aqui está horrível)

  7. Olá pessoal, estou com um probleminha aqui...

    Seguinte, meu professor passou um trabalho pra eu fazer: um jogo pedra-papel-tesoura-lagarto-spock (uma variante do famoso Jan Ken Po). Porém, esse jogo será dividido em duas partes: a online e a offline, a primeira já fiz já que basta os usuarios entrarem com as jogadas e eu analisar... O problema está no modo offline: ele quer que o usuário chame um arquivo texto no terminal onde estão todas as jogadas no seguinte formato:

     

    papel/tesoura

    lagarto/pedra

    tesoura/spock

    ...{daí em diante...}

     

    como ler o arquivo eu sei, uso um WHILE NOT EOF e tal, mas agora, como fazer o compilador analisar o texto somente até antes da barra e armazenar a jogada em uma variável? Depois continuar analisando o texto até  fim da linha?

    É posível usar um FOR com um LENGHT? Estava pensando em fazer algo do tipo:

    if (ParamCount = 1) then  Begin    Assign(Entrada,ParamStr(1));    Reset(Entrada);    while not eof(Entrada) do    Begin      readln(Entrada,j1);      for x := 1 to Lenght(j1) do      Begin        if j1[x] = '/' then        Begin          for y := 1 to Lenght(x-1) do          {condiçoes das jogadas}        End;      End;    End;  End;

    Desde já agradeço futuras respostas :);)

  8. Olá a todos, sou iniciante em pascal aí estou fazendo um programa tipo um jogo pedra papel tesoura e então eis que me surge um problema: validação de entradas tipo string.
    Coloquei um while para repetir a frase 'digite uma jogada válida' toda vez que o usuario digitar uma entrada invalida. Mas ai mesmo com a entrada estando correta o programa cai no while e fica no loop...
    Meu codigo ta assim:
     

    Readln (jog1);While (jog1<>'pedra') or (jog1 <> 'papel') or (jog1 <> 'tesoura') doBeginWriteln ('Digite algo válido:');Readln (jog1);End;

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!