Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Jogo da forca. As letras que eu chuto são impressas duplicadas na tela.

//Aprendendo a fazer o loop e varrer o array(vetor)
//se eu digito A, por exemplo, sai assim: _ _ _A A_ _ _A A. O que poderia ser?

#include <stdio.h>
#include <string.h>
int main(){

    char palavrasecreta[20];

    sprintf(palavrasecreta, "MELANCIA");

    int acertou = 0;
    int enforcou = 0;

    char chutes[26];
    int tentativas = 0;

    //O "do while" primeiro executa o bloco e depois a condição enquanto o while
    //executa primeiro a condição.
    do{


        for(int i = 0; i < strlen(palavrasecreta); i++){
            int achou = 0;
            for(int j  = 0; j < tentativas ; j++){
                if(chutes[j] == palavrasecreta[i]){
                    printf(" %c");
                    achou = 1;
                    break;
                }
            }
            if(achou){
                printf("%c ", palavrasecreta[i]);
            }
            else{
                printf("_ ");
            }

        }
        printf("\n");
        char chute;
        printf("Qual eh a letra?\n");
        scanf(" %c", &chute); //sempre dar espaço antes do %c!!!!
        chutes[tentativas] = chute;
        tentativas++;





    }while(!acertou && !enforcou); //pode fazer while(acertou == 0 && enforcou == 0)
    //mas vamos fazer !acertou && !enforcou (nao acertou e não enforcou), sendo que 
    //"!" significa negação
}
5 respostas

Ola Vinicius,

seu código parece OK. Ao compilar e rodar aconteceu isso:

_ _ _ _ _ _ _ _
Qual eh a letra?

Digitei a letra 'A', então:

A
_ _ _  A _ _ _  A
Qual eh a letra?

Em seguida digitei 'B':

B
_ _ _  A _ _ _  A
Qual eh a letra?

Este era o comportamento esperado? Você pode tentar compilar novamente e ver se o erro persiste.

Espero que ajude.

Fala Eric! Então, o erro está persistindo aqui. Não estou entendendo o porque disso. Uso o compilador Dev c++ e ele nunca me deu esse tipo de problema.

Voce pode tentar compilar e rodar pelo terminal para ver se o problema ocorre.

Para compilar, basta acessar a pasta onde o arquivo .c se encontra e digitar

gcc <nomeDoArquivo>.c -o jogoDaVelha

Isso ira gerar um programa na mesma pasta, o qual pode ser executado desta forma:

./jogoDaVelha

Mesmo rodando pelo terminal, as letras ficam repetidas. Alguma sugestão?

solução!

já achei a solução. Tinha um printf a mais antes de achou = 1. Por isso estava imprimindo duas vezes cada letra.