3
respostas

Opção de jogo contínuo para o usuário

Olá! Eu estou tentando implementar a função "parardejogar" que daria a opção ao usuário de jogar novamente após o término do jogo ou sair. Porém, com o código do curso as variáveis das funções que compõem o jogo não zeram seus valores para iniciar um novo jogo. Por exemplo, a primeira palavra secreta do jogo foi MELANCIA. O usuário testou as letras: A, N, H,E , M, O e perdeu. Quando eu vou tentar implementar o "parardejogar" , e o usuário opta por jgoar novamente, o novo jogo já inicia com as letras chutadas e também com o contador de tentativas não zerado. A segunda palavra por exemplo é MORANGO, o jogo já inicia com:

tentativa 7 MO_A_N_O

Queria saber quais alterações no código eu preciso fazer para "resetar" as variáveis e poder fazer um looping do jogo em si.

Obrigada!

3 respostas

Olá Daniela, tudo bem com você?

A única coisa que precisamos zerar para que o jogo volte ao estado inicial é a variável chutesdados, dessa forma tudo estará do jeitinho que começou :)

Eu tentei implementar uma função e tive o mesmo problema que você, e vou te mostrar qual foi a minha abordagem para resolver, mas você pode adaptar e procurar a sua própria maneira :)

int main() {
    char jogarNovamente;
    do {
        jogo(&jogarNovamente);
        chutesdados = 0;
    }while(jogarNovamente == 'S');

}

Eu optei por deixar a função main apenas responsável por executar o jogo e depois observar se teremos uma nova partida ou não, utilizando também um do-while

Essa função jogo é a antiga função main, a única diferença que é que agora eu passo um parâmetro que é para saber se o usuário vai querer jogar novamente :)

int jogo(char* novamente) {
    abertura();
    escolhepalavra();

    // Resto do Código

E ao final do código eu acrescentei a pergunta:

    adicionapalavra();
    printf("Você deseja jogar Novamente? [S]im ou [N]ao\n");
    scanf("%s", novamente);

Dessa forma eu pego a resposta do usuário e estou atribuindo um valor para a nosso char jogarNovamente, dessa forma caso seja S iremos mudar chutesdados para 0 e reiniciar o jogo :)

Conseguiu Compreender? Qualquer coisa estou a disposição!

Abraços e Bons Estudos!

Compreendi sim! Eu estava tentando algo bem mais confuso de implementar hahahahaahhah

Fiquei com uma dúvida apenas, eu sem querer digitei o

... while(jogarNovamente == 'S');

com aspas duplas: "S" e dessa forma o código não funcionou. Não lembro de ter visto no curso a diferença da aspas duplas e simples... poderia me explicar por favor?

Obrigada!

Olá Daniela,

Não lembro de ter visto no curso a diferença da aspas duplas e simples

Utilizamos as aspas simples quando estamos nos referindo à um carácter, enquanto as aspas duplas servem para definir strings, veja que você não consegue digitar algo como printf('Olá Mundo'); :)

O erro aconteceu porque quando você colocou as aspas duplas, ele tentou comparar um carácter com uma string, e ai o compilador acusa que essa comparação é inválida!

Abraços e Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software