Ir ao conteúdo
  • Cadastre-se

Jogo da Senha em C


JoeSteep

Posts recomendados

Jogo da senha Segundo a Wikipedia, o jogo da senha (Mastermind) foi criado por Mordechai Meirowitz. Consistia num jogo de tabuleiro em que uma senha de quatro dígitos representados por pinos coloridos (sendo 6 possibilidades de cores) era estabelecida pelo jogador desafiador e deveria ser descoberta em 10 tentativas pelo jogador desafiado. Para tanto, a cada tentativa, o desafiador informava ao deasafiado quantos pinos estavam na posição correta e quantos faziam parte da senha mas estavam em posição equivocada. Implementação Como será utilizada interface de texto, ao invés de cores serão usados números (de 1 a 6) para compor a senha de quatro dígitos. A senha deve ser recebida via teclado, sendo digitada pelo jogador desafiador. A senha deve ser armazenada num vetor de quatro posições e um outro vetor similar deve ser usado para receber as tentativas do jogador desafiado. A cada tentativa, o programa deve informar a quantidade de números corretos em posição correta e a quantidade de números corretos (ou seja que fazem parte da senha) em posição equivocada. Exemplo: Senha correta: 1 1 3 5 Tentativa 1: 1 1 1 1 Dígitos corretos: 2 Dígitos deslocados: 0 Tentativa 2: 1 1 2 3 Dígitos corretos: 2 Dígitos deslocados: 1 E assim sucessivamente. O jogo termina quando o jogador desafiado acerta a senha, sendo portanto vencedor, ou quando terminam as dez tentativas, sendo vencedor o jogador desafiador.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Tem como alguem ajudar a identificar o erro na linda marcada ?

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define  TAM 4

main(){
    int p1[TAM], p2[TAM], i, x, t=10;
    printf("Digite 4 numeros de 1 a 6 \n");
    for(i=0; i<TAM; i++){
        p1 = getch();
        printf("*");
    }
    while(t>0){
        printf("\n Acerte \n");
        for(x=0; x<TAM; x++){
                  p2[x] = getche();
           }
           if(p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2] && p1[3]==p2[3]){
                printf("\n Acertou \n");
             (t=1);
              }
              if(p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2]){
                  printf("\n 3 corretos em posicao correta \n");
              }else{
                  if(p1[0]==p2[0]) && p1[1]==p2[1] && p1[3]==p2[3]){          <Erro nessa linha
                      printf("\n 3 corretos em posicao correta \n");
                  }else{
                      if(p1[0]==p2[0] && p1[2]==p2[2] && p1[3]==p2[3]){
                      printf("\n 3 corretos em posicao correta \n");    
                      }else{
                          if(p1[1]==p2[1] && p1[2]==p2[2] && p1[3]==p2[3]){
                          printf("\n 3 corretos em posicao correta \n");    
                          }
                      }
                  }
        }
       t--;
    }
      
}
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@JoeSteep    para postar o código do jeito certo clique no botão  <>  que está na barra de ferramentas da janela de responder e cole o seu código na janela que se abre, por que senão o código fica alterado e faltando algumas variáveis ou números.

   o erro do programa é por que você colocou  )  depois de p1[ 0 ] == p2[ 0 ] , então é só deletar esse ) .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@devair1010 infelizmente ja desfiz aquilo td, virou isso agr, o problema agr é q ele ta repetindo quando acerta 3 numeros ele tambem fala q acertou 2

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define  TAM 4

main(){
    int p1[TAM], p2[TAM], i, x, t=10;
    printf("Digite 4 numeros de 1 a 6 \n");
    for(i=0; i<TAM; i++){
        p1 = getch();
        printf("*");
    }
    while(t>0){
        printf("\n Acerte \n");
        for(x=0; x<TAM; x++){
                  p2[x] = getche();
           }
           if(p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2] && p1[3]==p2[3]){
                printf("\n Acertou \n");
             (t=1);
              }else{
              if(p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2]){
                  printf("\n 3 corretos em posicao correta \n");
              }
              if(p1[0]==p2[0] && p1[1]==p2[1] && p1[3]==p2[3]){
                  printf("\n 3 corretos em posicao correta \n");
              }
              if(p1[0]==p2[0] && p1[2]==p2[2] && p1[3]==p2[3]){
                 printf("\n 3 corretos em posicao correta \n");
              }
              if(p1[1]==p2[1] && p1[2]==p2[2] && p1[3]==p2[3]){
                printf("\n 3 corretos em posicao correta \n");
              }else{
                 if(p1[0]==p2[0] && p1[1]==p2[1]){
                    printf("\n 2 corretos em posicao correta \n");
                 }
                 if(p1[0]==p2[0] && p1[2]==p2[2]){
                    printf("\n 2 corretos em posicao correta \n");
                 }
                 if(p1[0]==p2[0] && p1[3]==p2[3]){
                    printf("\n 2 corretos em posicao correta \n");
                 }
                 if(p1[1]==p2[1] && p1[2]==p2[2]){
                     printf("\n 2 corretos em posicao correta \n");
                 }
                 if(p1[1]==p2[1] && p1[3]==p2[3]){
                     printf("\n 2 corretos em posicao correta \n");
                 }
                 if(p1[2]==p2[2] && p1[3]==p2[3]){
                     printf("\n 2 corretos em posicao correta \n");
                 }else{
                     if(p1[0]==p2[0]){
                         printf("\n 1 correto em posicao correta \n");    
                     }
                    if(p1[1]==p2[1]){
                        printf("\n 1 correto em posicao correta \n");
                    }
                    if(p1[2]==p2[2]){
                        printf("\n 1 correto em posicao correta \n");
                    } 
                    if(p1[3]==p2[3]){
                        printf("\n 1 correto em posicao correta \n");
                    }
                 }
             }
          }
       t--;
    }
      
}
 

 

adicionado 7 minutos depois

Ja consegui resolver esse ultimo problema

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Para postar códigos use a tag CODE apertando o botão <> no topo do campo de respostas, assim você preserva a formatação do código e evita que o fórum faça alterações nele.

Por exemplo, o fórum "comeu" todos os [ i ] (sem espaços) do seu código, pois no fórum isso é a tag para deixar o texto em itálico, então o texto do seu código está em itálico a partir do primeiro que foi encontrado (os demais apenas somem porque o texto já tá em itálico).

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

estou com um erro na parte dos deslocados a variável esta retornando um valor muito alto , podem me da uma ajuda ? <

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define  TAM 4

main(){
    int p1[TAM], p2[TAM], i, x, t=10, des=0;
    printf("Digite 4 numeros de 1 a 6 \n");
 for(i=0; i<TAM; i++){
  p1 = getch();
     printf("*");
 }
  
 while(t>0){
  if(t>0){
   printf("\n Acerte \n");
 }
  for(x=0; x<TAM; x++){
         p2[x] = getche();
     }
    
     if(p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2] && p1[3]==p2[3]){
       printf("\n Acertou \n");
       (t=1);
     }
      
             else{
                 if(p1[0]==p2[1] || p1[0]==p2[2] || p1[0]==p2[3] || p1[0]==p2[4]){
                  des;
    
     }
       if(p1[1]==p2[0] || p1[1]==p2[2] || p1[1]==p2[3] || p1[1]==p2[4]){
                 des++;
    
     }
       if(p1[2]==p2[1] || p1[2]==p2[0] || p1[2]==p2[3] || p1[2]==p2[4]){
                  des++;
   
     }
      if(p1[3]==p2[1] || p1[3]==p2[2] || p1[3]==p2[0] || p1[3]==p2[4]){
                  des++;
   
    }
    }
    printf("\n numeros deslocados : %d" , &des);
    t--;

 }
 } >

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

31 minutos atrás, isrnick disse:

Para postar códigos use a tag CODE apertando o botão <> no topo do campo de respostas, assim você preserva a formatação do código e evita que o fórum faça alterações nele.

Por exemplo, o fórum "comeu" todos os [ i ] (sem espaços) do seu código, pois no fórum isso é a tag para deixar o texto em itálico, então o texto do seu código está em itálico a partir do primeiro que foi encontrado (os demais apenas somem porque o texto já tá em itálico).

 

49 minutos atrás, devair1010 disse:

@JoeSteep    para postar o código do jeito certo clique no botão  <>  que está na barra de ferramentas da janela de responder e cole o seu código na janela que se abre, por que senão o código fica alterado e faltando algumas variáveis ou números.

   o erro do programa é por que você colocou  )  depois de p1[ 0 ] == p2[ 0 ] , então é só deletar esse ) .

Pelo menos leiam o que as pessoas que querem ajudar estão dizendo. Se não colocar na tag CODE o código perde partes e ninguém vai conseguir ajudar.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

@JoeSteep    ele está mostrando acertou 2 quando acertou 3 por que nos comandos if's tem que colocar um else para cada if, ou então colocar todas as possibilidades dentro de um único if .   então seu código ficaria assim :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define  TAM 4
int main(){
    int p1[TAM], p2[TAM], i, x, t=10;
    printf("Digite 4 numeros de 1 a 6 \n");
    for(i=0; i<TAM; i++){
        p1[i] = getch();
        printf("*");
    }
    while(t>0){
        printf("\n Acerte \n");
        for(x=0; x<TAM; x++){
            p2[x] = getche();
        }
        if(p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2] && p1[3]==p2[3]){
            printf("\n Acertou \n");
            (t=1);
        }
        else{
            if(p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2]){
                printf("\n 3 corretos em posicao correta \n");
            }
            else{
                if(p1[0]==p2[0] && p1[1]==p2[1] && p1[3]==p2[3]){
                    printf("\n 3 corretos em posicao correta \n");
                }
                else{
                    if(p1[0]==p2[0] && p1[2]==p2[2] && p1[3]==p2[3]){
                        printf("\n 3 corretos em posicao correta \n");
                    }
                    else{
                        if(p1[1]==p2[1] && p1[2]==p2[2] && p1[3]==p2[3]){
                            printf("\n 3 corretos em posicao correta \n");
                        }
                        else{
                            if((p1[0]==p2[0] && p1[1]==p2[1])||(p1[0]==p2[0] && p1[2]==p2[2])){
                                printf("\n 2 corretos em posicao correta \n");
                            }else{
                                if(p1[0]==p2[0] && p1[2]==p2[2]){
                                    printf("\n 2 corretos em posicao correta \n");
                                }else{
                                    if(p1[0]==p2[0] && p1[3]==p2[3]){
                                        printf("\n 2 corretos em posicao correta \n");
                                    }else{
                                        if(p1[1]==p2[1] && p1[2]==p2[2]){
                                            printf("\n 2 corretos em posicao correta \n");
                                        }else{
                                            if(p1[1]==p2[1] && p1[3]==p2[3]){
                                                printf("\n 2 corretos em posicao correta \n");
                                            }else{
                                                if(p1[2]==p2[2] && p1[3]==p2[3]){
                                                    printf("\n 2 corretos em posicao correta \n");
                                                }
                                                else{
                                                    if(p1[0]==p2[0]||p1[1]==p2[1]||p1[2]==p2[2]||p1[3]==p2[3]){
                                                         printf("\n 1 correto em posicao correta \n");
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
       t--;
    }
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

@JoeSteep    para aceitar apenas números  de 1 até 6 use esse código no lugar do primeiro loop

for(i=0; i<TAM; i++){
        l1:
        p1[i] = getch();
        if(p1[i]-48<1 || p1[i]-48>6){printf("\nSo Pode Numeros De 1 Ate 6\n");goto l1;}
        printf("*");
    }

quanto a usar acentos vou ter que pesquisar um pouco, depois posto alguma coisa.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!