Modificação de ‘Descubra o número’. Modifique o programa do Exercício 5.32 para contar o número de tentativas que o jogador fez. Se o número for 10 ou menos, imprima “Ou você conhece o segredo ou teve sorte!” Se o jogador acertar o número em 10 tentativas, então imprima “Ahah! Você conhece o segredo!” Se o jogador conseguir em mais de 10 tentativas, então imprima “Você deveria se sair melhor!” Por que não deveria passar de 10 tentativas? Bem, com cada ‘escolha boa’, o jogador deveria poder eliminar metade dos números. Agora, mostre por que qualquer número de 1 a 1000 pode ser descoberto em 10 ou menos tentativas.

Passo 1

Fala Galera!!! Vamos juntos criar esse jogo ‘descubra o número’. A lógica para o nosso programa é criar uma função que consiga gerar um número aleatoriamente e armazenar ele em uma variável, e então, pedir para que o usuário digite um número e fazer a comparação com o número gerado, verificando se é o mesmo que o usuário digitou. Caso ele tenha acertado mostrar na tela e perguntar se ele quer jogar novamente. E enquanto o usuário não acerte o programa deve continuar pedindo para que o usuário digite a próxima tentativa até acertar.

Passo 2

Dentro da nossa função vamos precisar de 4 variáveis, para guardar o número gerado, para guardar a tentativa do usuário, para guardar os valores para continuar ou sair do game, e uma última para contar quantas vezes o usuário jogou até acertar.

Para que o programa continue rodando até que o usuário decida sair, podemos usar a estrutura de repetição ‘do while { } ’. Para gerar números aleatório de 1 até 1000 usaremos o comando ‘ 1 + rand () % 1000; ’ . Dentro do ‘ do while {} ’ precisamos de outra estrutura de repetição para enquanto o valor do número gerado seja diferente do número digitado pelo usuário, continue repetindo o processo.

Passo 3

Quando o usuário acertar, o programa irá mostrar na tela quantas tentativas o usuário realizou até acertar e perguntar para o usuário se ele vai querer continuar jogando, utilizando 1 para continuar e 2 para sair. Logo, nossa função ficará da seguinte forma:

void descubraGame(void){

int x; /*variavel para o gerador de numeros */

int descubra; /* variavel para armazenar a tentativa do usuario */

int continuar; /* variavel para continuar ou não */

int total =1; /* total de tentativas */

/* estrutura de repetição, utilizando 2 para sair do game */

do{

/*gerando numero de 1 até 1000 */

x = 1 + rand() % 1000;

/* pedir para o usuário jogar */

printf("\n Eu tenho um numero entre 1 e 1000. \n");

printf(" Voce consegue descobrir qual e?\n ");

printf(" Digite sua primeira tentativa. \n");

scanf(" %d", &descubra);

/* loop enquanto não acertar */

while (descubra != x){

/* if muito baixo */

if (descubra

printf("Muito baixo. Tente novamente.\n? ");

} /* fim do if */

else {

printf("Muitlo alto. Tente novamente.\n? ");

} /* fim do else */

scanf("%d", &descubra);

total ++;

} /* fim do while */

printf("\nExcelente! Voce descobriu o numero!\n");

/* deteminar a total de jogadas até descubrir */

if (total

printf("Ou voce conhece o segredo ou teve sorte !\n");

} /* fim do if */

else if( total == 10 ){

printf("Aha! Voce conhece o segredo!\n");

}/* fim do else if */

else{

printf("Voce deveria se sair melhor!\n\n");

}

/* tela para para outro jogo */

printf(" Gostaria de jogar novamente (s ou n)?\n");

printf("Por favor escreva (1 = sim , 2 = nao)? ");

scanf("%d", &continuar);

} while( continuar ==1); /* fim do... while */

} /* fim da função descubraGame */

Passo 4

Feito isso, nosso programa está quase pronto. Agora só precisamos chamar a função dentro do nosso programa, e partiu jogar!!

Resposta

O programa final será: