Ir ao conteúdo

Posts recomendados

Postado
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main()

{

	int vetor[4], i, tentativas = 20, senhaUsuario[4], j, correto = 0, errou = 0, num;
	int numero_certo_posicao_certa = 0;
	int numero_certo_posicao_errada = 0;
	int vetor1[4] = { 0 };
	int senhaUsuario1[4] = { 0 };
	char continuar = 's';
	
	srand(time(NULL));
	
	do
	{

		printf("\n Chave: ");  // Apenas para Versão de Teste.

		for (i = 0; i < 4; i++)
		{
		
				vetor[i] = 1 + (rand() % 8);
				printf("%d ", vetor[i]);   // Apenas para versão de Teste.
		}

		

		while (tentativas > 0)
		{
			printf("\n\n Insira uma Chave (Composta por 4 numeros com um espaco entre os digitos): ");

			for (i = 0; i < 4; i++)
			{
				scanf("%d", &senhaUsuario[i]);
			}

			for (i = 0; i < 4; i++)
			{

				if (vetor[i] == senhaUsuario[i])
				{
					numero_certo_posicao_certa++;
					vetor1[i] = 1;
					senhaUsuario1[i] = 1;


					if (numero_certo_posicao_certa == 4)
					{
						printf("\n Parabens! voce Acertou na Chave! Tentativas usadas: %d \n", tentativas);
						tentativas = 0;
					}
				}

			}


			for (i = 0; i < 4; i++)
			{

				for (j = 0; j < 4; j++)
				{
					if (vetor[j] == senhaUsuario[i] && vetor1[j] == 0 && senhaUsuario1[i] == 0)
					{
						numero_certo_posicao_errada++;
						vetor1[j] = 1;
						senhaUsuario1[i] = 1;
					}
				}
			}


			for (i = 0; i < 4; i++)
			{
				vetor1[i] = 0;
				senhaUsuario1[i] = 0;
			}
			tentativas--;
			errou++;


			if (tentativas > 0)
			{
				printf("\n %d Numeros Certos na posicao Certa.", numero_certo_posicao_certa);
				printf("\n %d Numeros Certos na posicao Errada", numero_certo_posicao_errada);
				printf("\n Tentativas Restantes: ( %d )", tentativas);
				printf("\n---------------------------------------------------------------------------------------\n");
			}

			numero_certo_posicao_certa = 0;
			numero_certo_posicao_errada = 0;
		}


		if (errou == 20)
		{
			printf("\n GAME OVER !!! (A Chave era: ");

			for (i = 0; i < 4; i++)
			{
				printf("%d ", vetor[i]);
			}

			printf("\n\n");
			
		}

		printf("\n Pretende Jogar Novamente? [s/n]");
		scanf(" %c", &continuar);
		printf("\n---------------------------------\n");
		printf("\n---------------------------------\n");
	}

	while (continuar == 's' || continuar == 'S');

	printf("\n Acabou! \n");



	system("pause");
}

Boa noite, precisava de ajuda para corrigir 3 coisas neste jogo que fiz:

 

1 - Ao criar os 4 números aleatórios, fazer com que eles sejam obrigatoriamente diferentes uns dos outros.

2 - Fazer o programa dizer ao utilizador em quantas tentativas adivinhou o resultado correto.

3 - Perguntar ao utilizador se quer repetir o programa (utilizei um do while mas não está a funcionar)

 

Desde já obrigado pela ajuda.

  • Curtir 1
  • Haha 1
Postado

voce esta iniciando as tentativas em 20 e depois esta decrementando errado poderia fazer assim 

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


int main()

{

	int vetor[4], i, tentativas = 19, senhaUsuario[4], j, correto = 0, errou = 0, num, tentativasusadas=1;
	int numero_certo_posicao_certa = 0;
	int numero_certo_posicao_errada = 0;
	int vetor1[4] = { 0 };
	int senhaUsuario1[4] = { 0 };
	char continuar = 's';
	
	srand(time(NULL));
	
	do{
		printf("\n Chave: ");
		for (i = 0; i < 4; i++){
			vetor[i] = 1 + (rand() % 8);
				printf("%d ", vetor[i]);
		}
		while (tentativas > 0)
		{
			printf("\n\n Insira uma Chave (Composta por 4 numeros com um espaco entre os digitos): ");

			for (i = 0; i < 4; i++)
			{
				scanf("%d", &senhaUsuario[i]);
			}

			for (i = 0; i < 4; i++)
			{

				if (vetor[i] == senhaUsuario[i])
				{
					numero_certo_posicao_certa++;
					vetor1[i] = 1;
					senhaUsuario1[i] = 1;


					if (numero_certo_posicao_certa == 4)
					{
						printf("\n Parabens! voce Acertou na Chave! Tentativas usadas: %d \n", tentativasusadas);
						tentativas = 0;
					}
				}

			}


			for (i = 0; i < 4; i++)
			{

				for (j = 0; j < 4; j++)
				{
					if (vetor[j] == senhaUsuario[i] && vetor1[j] == 0 && senhaUsuario1[i] == 0)
					{
						numero_certo_posicao_errada++;
						vetor1[j] = 1;
						senhaUsuario1[i] = 1;
					}
				}
			}


			for (i = 0; i < 4; i++)
			{
				vetor1[i] = 0;
				senhaUsuario1[i] = 0;
			}
			errou++;


			if (tentativas > 0)
			{
				printf("\n %d Numeros Certos na posicao Certa.", numero_certo_posicao_certa);
				printf("\n %d Numeros Certos na posicao Errada", numero_certo_posicao_errada);
				printf("\n Tentativas Restantes: ( %d )", tentativas);
				printf("\n---------------------------------------------------------------------------------------\n");
			}

			numero_certo_posicao_certa = 0;
			numero_certo_posicao_errada = 0;
			tentativas = tentativas-1;
			tentativasusadas = tentativasusadas+1;
		}


		if (errou == 20)
		{
			printf("\n GAME OVER !!! (A Chave era: ");

			for (i = 0; i < 4; i++)
			{
				printf("%d ", vetor[i]);
			}

			printf("\n\n");
			
		}

		printf("\n Pretende Jogar Novamente? [s/n]");
		scanf(" %c", &continuar);
		printf("\n---------------------------------\n");
		printf("\n---------------------------------\n");
	}

	while (continuar == 's' || continuar == 'S');

	printf("\n Acabou! \n");



	system("pause");
}

 

  • Curtir 1
  • Obrigado 1
Postado

Obrigado pela ajuda!! Também já consegui fazer o programa repetir caso o utilizador queira. Só falta mesmo a parte de gerar 4 números aleatórios que não se repitam entre si.

  • Curtir 1
Postado

Acho que não devia abrir outro tópico no mesmo dia com o mesmo programa. Só dificulta para que alguém te ajude e acompanhe seu progresso. [Minha opinião apenas].

 

Eu te mostrei hoje 3 exemplos com um programa de teste rodando, para você entender como usar funções no seu programa. E você depois dos 3 exemplos simplesmente incorporou o código dentro de main() e excluiu a solitária função. Não funcionou e você abriu outro tópico.

Acha mesmo que vai progredir assim?  Acho que não vai. 

Se não entendeu nenhuma das 3 opções nem o programa de exemplo talvez devesse perguntar algo. Não foi uma boa ideia escrever assim. Vai ficar mais difícil e seu programa não está bom...

  • Curtir 1
Postado

Desse jeito funciona sem erros, além de funcionar, teoricamente, no Windows e no Linux. Não sei qual deveria ser o comportamento do programa, mas parece que é algo semelhante ao Jogo da Forca. Seja como for, veja se desse jeito funciona para você.

 

Obs.: O código ficou grande e com muitos arquivos, então vou deixar um pacote com os arquivos usados.

Jogo.zip

  • Curtir 1

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