Ir ao conteúdo
  • Cadastre-se

C Jogo da Adivinhação em linguagem c


Zomeplay

Posts recomendados

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
	int nivel, tamanho, numeroTentativas=0;
	
	printf("------------------------------------------------------------------------------\n");
	printf("FOI GERADO UM NUMERO\n");
	printf("   ADIVINHE!\n");
	printf("HAHAHAHAHAHAHA\n");
	printf("-------------------------------------------------------------------------------\n");
	
	printf("(1) Nivel fácil! (20 Tentativas e o numero eh de 0 ate 10)\n");
	printf("(2) Nivel intermediario!(10 Tentativas e o numero eh de 0 ate 100)\n");
	printf("(3) Nivel difícil! (5 Tentativas e o numero eh de 0 ate 1000)\n");
	printf("Escolha o nivel que deseja jogar:\n");
    scanf("%d", &nivel);
    
		if (nivel == 1){
    		tamanho = 10;
    		numeroTentativas = 20;
		} else if (nivel == 2){
			tamanho=100;
			numeroTentativas = 10;
		} else {
			tamanho = 1000;
			numeroTentativas = 5;
		}
	
	int numeroAleatorio;
	srand(time(NULL));
	numeroAleatorio = rand() % tamanho;
	int numero, minimo = 0, maximo = tamanho, jogadas = 0, cont=0;
	 
	do{
		printf("Digite o numero:");
		scanf("%d", &numero);
			jogadas++;
		if(numero > numeroAleatorio){
			maximo = numero;
			printf("O numero esta entre %d e %d\n", minimo, maximo);
			break;
		} else if (numero < numeroAleatorio){
			minimo = numero;
			printf("O numero esta entre %d e %d\n",  minimo, maximo);
		} else{ 
			printf("Parabens! voce acertou com %d jogadas\n", jogadas);                                 
				printf("               ___\n");
				printf("             .-\:      /-.\n");
				printf("            | (|:.     |) |\n");
				printf("             '-|:.     |-'\n");
				printf("               \::.    /\n");
				printf("                '::. .'\n");
				printf("                  ) (\n");
				printf("                .' '.\n");                                                                                   		
		}
			
			cont++;	
	}while (cont < numeroTentativas);
	
	printf("Como diz o meu amigo Raul Seixas\n");
				printf("      |??????|\n");
				printf("     |   tente  |\n");
				printf("     |  outra   |\n");
				printf("     |   vez    |\n");
				printf("     |____|\n");
				printf("     (\__/) ||\n");
				printf("     ( •-•) ||\n");
    printf("Numero de %d jogadas que voce errou.\n", jogadas);
	
	return 0;
}

Elabore um código que ao ser executado permita ao usuário digitar um número qualquer e faça o computador verificar se corresponde ao número secreto. O programa deve ainda informar se o número informado pelo usuário é maior ou menor que o número secreto.  
 
Por exemplo, se o número secreto for 27 e, o número informado pelo usuário for igual a 10, o computador deve informar que pensou em outro número, maior que 10. Então, você tenta o número 50, e o computador diz que é menor que 50.

fácil (20 tentativas), médio (10 tentativas), difícil (5 tentativas) 

 

eu fiz o programa, só que na imagem aparece digite o número, eu quero saber se tem alguma forma de para até esse ponto

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

@Zomeplay Você definiu que seu loop iria continuar enquanto cont < numeroTentativas, então faça com que seja igual! Caso o usuário acerte a resposta, cont = numeroTentativas.

Também acho interessante usar o switch case para escolher a dificuldade, e não se esqueça de mostrar quantas tentativas o usuário ainda tem, isso é importante. Também mostre o número que havia sido sorteado caso ele perca, para sanar a curiosidade...

Teste isso:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>

int main(){
    
    setlocale(LC_ALL,"Portuguese");
	int nivel, tamanho, numeroTentativas = 0, numeroAleatorio;
	
	printf("------------------------------------------------------------------------------\n");
	printf("\t\t\tFOI GERADO UM NÚMERO\n");
	printf("\t\t\t      ADIVINHE!\n");
	printf("\t\t\t  HAHAHAHAHAHAHAHA\n");
	printf("------------------------------------------------------------------------------\n");
	
	printf("(1) Nivel fácil! (20 Tentativas e o numero é de 0 ate 10)\n");
	printf("(2) Nivel intermediario! (10 Tentativas e o numero é de 0 ate 100)\n");
	printf("(3) Nivel difícil! (5 Tentativas e o numero é de 0 ate 1000)\n");
	printf("Escolha o nivel que deseja jogar: ");
    scanf("%d", &nivel);
    switch (nivel){
        case 1 :
    		tamanho = 10;
    		numeroTentativas = 20;
    		break;
    		
		case 2 :
			tamanho=100;
			numeroTentativas = 10;
			break;
			
		case 3 :
			tamanho = 1000;
			numeroTentativas = 5;
			break;
        
        default : //Caso não corresponda à nenhum nível
            printf ("\nOpção inválida!\n");
            printf ("\nPressione enter para continuar...\n");
            while(getchar() != '\n');
            getchar();
            return 0;
    }
    
	srand(time(NULL));
	numeroAleatorio = rand() % tamanho + 1;
	int numero, minimo = 0, maximo = tamanho, jogadas = 0, cont=0;
	 
	do{
		printf("Digite o número: ");
		scanf("%d", &numero);
		jogadas++;
		
		if(numero > numeroAleatorio){
			maximo = numero;
			printf("O número está entre %d e %d\n", minimo, maximo);
			printf("Você têm %d jogadas restantes...\n", numeroTentativas-jogadas);
		} else if (numero < numeroAleatorio){
			minimo = numero;
			printf("O número está entre %d e %d\n",  minimo, maximo);
			printf("Você têm %d jogadas restantes...\n", numeroTentativas-jogadas);
		} else{ 
			printf("\nParabéns! você acertou com %d jogadas!\n", jogadas);
			cont = numeroTentativas; //Encerra o loop
		}
			
	    cont++;	
	}while (cont < numeroTentativas); //Limite de jogadas
    
    if(jogadas == numeroTentativas && cont <= numeroTentativas){
        printf("\nVocê errou todas as jogadas! Você perdeu!");
      	printf("\nO número sorteado era: %d\n", numeroAleatorio);
    }
    else{
        printf("\nVocê errou %d jogadas!\n", jogadas-1);
    }
	
	return 0;
}

Esses desenhos que fez estão causando bugs ao seu programa:

image.png.e8f49d19d151a4da50f1c67e5ce548b9.png

Simplesmente os tirei, são desnecessários.

Não se esqueça, a função rand() tem que ser colocada da seguinte forma: "rand() % ((maior número - menor número) + 1) + menor número", ou seja, quer um número de 1 a 10? faça rand() % 10 + 1.

PS: eis que você é o mestre das adivinhações... kk

image.png.00ef6cfbacf8642bcc0e61498f36dcfc.png

O nível fácil é impossível de não acertar e o difícil é impossível... Quer dizer, quase impossível... Se você tiver uma sorte como a que eu tive, talvez acerte... kk

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

  • 10 meses depois...

@Lucca Rodrigues

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <locale.h>

int main() {
  setlocale(LC_ALL,"Portuguese");
  int  x;
  int tent = 0;
  char s = 't';
  int nivel;
  int tamanho;
  int numeroTentativas;
  



        printf("\n_____________________________________________________________________________");
        printf("\n                   ESTOU PENSANDO EM UM NUMERO DE 1 a 100, ADIVINHE!\n");
  

  
        
        printf("(1) Nivel fácil! (20 Tentativas e o numero e de 0 ate 10)\n");
	printf("(2) Nivel intermediario! (10 Tentativas e o numero e de 0 ate 100)\n");
	printf("(3) Nivel difícil! (5 Tentativas e o numero e de 0 ate 1000)\n");
	printf("Escolha o nivel que deseja jogar: ");
    scanf("%d", &nivel);
    switch (nivel){
        case 1 :
    		tamanho = 10;
    		numeroTentativas = 20;
    		break;
    		
		case 2 :
			tamanho=100;
			numeroTentativas = 10;
			break;
			
		case 3 :
			tamanho = 1000;
			numeroTentativas = 5;
			break;
        
        default : //Caso não corresponda a nenhum nivel
            printf ("\nOpçao invalida!\n");
            printf ("\nPressione enter para continuar...\n");
            while(getchar() != '\n');
            getchar();
            return 0;
    }

        srand(time(NULL));
	x = rand() % tamanho + 1;
        int numero, minimo = 0, maximo = tamanho, jogadas = 0, cont=0;

  
       do {
                 printf("Digite o numero: ");
		scanf("%d", &numero);
		jogadas++;
		
		if(numero > x){
			maximo = numero;
			printf("O numero esta entre %d e %d\n", minimo, maximo);
			printf("voce tem %d jogadas restantes...\n", numeroTentativas-jogadas);
		} else if (numero < x){
			minimo = numero;
			printf("O numero esta entre %d e %d\n",  minimo, maximo);
			printf("voce tem %d jogadas restantes...\n", numeroTentativas-jogadas);
		} else{ 
			printf("\nParabens! voce acertou com %d jogadas!\n", jogadas);
			cont = numeroTentativas; //Encerra o loop
    }
  
 

    tent++;
  } while (numero != x && tent <= numeroTentativas);

  if (tent > numeroTentativas) {
    printf("\n\nVOCE ULTRAPASSOU O LIMITE DE TENTATIVAS! TENTE OUTRA VEZ!");
    printf("\nO numero era: %d", x);
  } 

  while (s != 's' && s != 'n') {
    printf("\nVOCE DESEJA TENTAR OUTRA VEZ? [s/n]: ");
    scanf("%c", &s);

    if (s == 's') 
      main();
  } 
  
  return 0;

}

Dá uma conferida por favor 

 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

@bianca4545   seria melhor usar a Função "fgets" e  atoi ,  assim se digitar     letras /símbolos/números ,  não dará erro .

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <locale.h>
#include <windows.h>
int main()
{
  l2:
  system("cls||clear");
  setlocale(LC_ALL,"Portuguese"); /// isso aqui não resolve Nada
  srand( time( NULL )          ); /// só precisa Uma vex  
  int  x                =     0 ;
  int  ret              =     0 ;
  int  tent             =     0 ;
  char s                =    't';
  char ax[11]           =   {""};
  int  nivel            =     0 ;
  int  tamanho          =     0 ;
  int  numeroTentativas =     0 ;
  printf("\n____________________________________________________________________________ _");
  printf("\n                   ESTOU PENSANDO EM UM NUMERO DE 1 a 100, ADIVINHE . . . ! \n");
  printf("(1) NIvel fácil . . . . . . . .! ( 20 Tentativas e o numero eh de 0 ate   10 )\n");
  printf("(2) NIvel intermediario  . . . ! ( 10 Tentativas e o numero eh de 0 ate  100 )\n");
  printf("(3) NIvel difícil  . . . . . . ! (  5 Tentativas e o numero eh de 0 ate 1000 )\n");
  printf("\t--> ");
  scanf("%d", &nivel);
  switch (nivel)
  {
  case 1 :
    tamanho = 10;
    numeroTentativas = 20;
    break;
  case 2 :
    tamanho=100;
    numeroTentativas = 10;
    break;
  case 3 :
    tamanho = 1000;
    numeroTentativas = 5;
    break;
  default : //Caso não corresponda a nenhum nivel
    printf ("\nOpçao invalida!\n");
    printf ("\nPressione enter para continuar...\n");
    while(getchar() != '\n');
    getchar();
    return 0;
  }
  x = rand() % tamanho + 1;
  int numero, minimo = 0, maximo = tamanho, jogadas = 0, cont=0;
  do
  {
    l1:
    numero = -1;
    printf("Digite o numero: ");
    /// int ret = scanf("%d", &numero);
    fgets(ax, 10 , stdin);
    numero = atoi(ax);
    if(numero == 0)goto l1;
    ret = numero;
    printf("ret= %d\n",ret);
    jogadas++;
    if(numero > x)
    {
      maximo = numero;
      printf("O numero esta entre %d e %d\n", minimo, maximo);
      printf("voce tem %d jogadas restantes...\n", numeroTentativas-jogadas);
    }
    else if (numero < x)
    {
      minimo = numero;
      printf("O numero esta entre %d e %d\n",  minimo, maximo);
      printf("voce tem %d jogadas restantes...\n", numeroTentativas-jogadas);
    }
    else
    {
      printf("\nParabens! voce acertou com %d jogadas!\n", jogadas);
      cont = numeroTentativas; //Encerra o loop
    }
    tent++;
  }while (numero != x && tent <= numeroTentativas);
  if (tent > numeroTentativas)
  {
    printf("\n\nVOCE ULTRAPASSOU O LIMITE DE TENTATIVAS! TENTE OUTRA VEZ!");
    printf("\nO numero era: %d", x);
  }
  while (s != 's' && s != 'n')
  {
    printf("\nVOCE DESEJA TENTAR OUTRA VEZ? [s/n]: ");
    scanf("%c", &s);
    if (s == 's')
                         /// main(); não Faca isso ! use goto
      goto l2;                         
  }
  return 0;
}

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!