Ir ao conteúdo
  • Cadastre-se

C++ problema na programação do jogo da forca


artigo13

Posts recomendados

opa e ai, estou com um problema no meu codigo de um jogo da forca em c++, o problema é que ele pula direto pro final, podem me ajudar ?

codigo usado logo abaixo ↓

 

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    
    char palavra[30], letra[1], secreta[30];
    int tam, i, chances, acertos;
    bool acerto=false;
    
    chances=6;
    tam=0;
    i=0;
    acerto=false;
    acertos=0;
    
    cout << "digite a palavra secreta sem que seu amigo veja: ";
    cin >> palavra;
    system("clear");
    
    while(palavra[i] != '\0'){
        i++;
        tam++;
    }
    
    for(i=0;i<30;i++){
        secreta[i]='_';
    }
    
    while((chances > 0)&&(acertos > tam)){
        cout << "chances restantes" << chances << "\n\n";
        cout << "palavra secreta";
        for(i=0; i<tam; i++){
            cout << secreta[i];
        }
        cout << "\n digite um letra";
        cin >> letra[0];
        for(i=0; i<tam; i++){
            if(palavra[i]==letra[0]){
                acerto=true;
                secreta[i]=palavra[i];
                acertos++;
            }
        }
        if(!acerto){
            chances--;
        }
        acertos=false;
        system("clear");
    }
    if(acertos==tam){
        cout << "voce ganhou"; 
    }else{
        cout << "PERDEU";
    }
    return 0;
}

 

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

si acertos começa valendo 0 e tam vale X porém nunca zero vamos supor que a palavra secreta é "forca" então tam vale 5 você teria algo 0 > 5, isso sempre vai ser falso, porque 0 nunca será maior que 5. Na seguinte condição:
while ( ( chances > 0 ) && ( acertos > tam ) ) você precisa que ambos sejam true... ou seja
while ( ( true ) && ( true ) )
mas ta dando
while ( ( true ) && ( false ) )
acredito que é ai o erro.

 

para você averiguar o que ta dando é só fazer isso:
 

#include <iostream>
#include <stdlib.h>
using namespace std;

int main() {

    char palavra[30], letra[1], secreta[30];
    int tam, i, chances, acertos;
    bool acerto = false;
    
    chances = 6;
    tam = 0;
    i = 0;
    acerto = false;
    acertos = 0;
    
    cout << "digite a palavra secreta sem que seu amigo veja: ";
    cin >> palavra;
    system ( "clear" );
    
    while ( palavra[i] != '\0' ) {
        i++;
        tam++;
    }
    
    for ( i = 0; i < 30; i++ ) {
        secreta[i] = '_';
    }
    
    cout << ( ( chances > 0 ) && ( acertos > tam ) );
    
    return 0;
}

Arrume essa parte e então você entrará no while. Acredito que esse seja seu problema mas pode ter mais, mas pelo menos você pode seguir.

adicionado 0 minutos depois

Para que entre no corpo do main precisa dar 1 e não zero

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

@artigo13         o que o @vangodp  disse está certo , então seu código poderia ser assim  :

#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
    char palavra[30],letra,secreta[30];
    int tam,i,chances=6,acertos=0;
    bool acerto;
    cout<<"digite a palavra secreta sem que seu amigo veja: ";
    cin >> palavra;
    system("cls");
    tam = strlen(palavra);
    for(i=0;i<30;i++){
        secreta[i]='_';
    }
    while((chances > 0)&&(acertos < tam)){/* aqui colocou o sinal invertido */
        cout<<"chances restantes"<<chances<<"\n"<<endl;
        cout<<"palavra secreta -> ";
        for(i=0; i<tam; i++){
            cout<<secreta[i];
        }
        cout<<"\n digite um letra";
        cin >> letra;
        acerto=false;
        for(i=0; i<tam; i++){
            if(palavra[i]==letra){
                acerto=true;
                secreta[i]=palavra[i];
                acertos++;
            }
        }
        if( ! acerto){
            chances--;
        }
        system("cls");
    }
    if(acertos == tam){
        cout<<"voce ganhou"<<endl;
    }
    else{
        cout<<"PERDEU"<<endl;
    }
    return 0;
}

 

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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