Ir ao conteúdo
  • Cadastre-se

C Jogo em C V2


Infante98

Posts recomendados

#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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

Talvez isso possa ajudar.

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

/* Constantes */
#define T_MATRIZ 10

void Gerador(int *matriz, int inicio, int fim);
/* Gera números aleatórios.
 * Passe uma matriz unidimensional para o procedimento gera uma faixa de números.
 * Exemplo: Gerador(v,1,10); Gera aleatoriamente um vetor de 10 números de 1 até 10.
 * AVISO: passe uma faixa de valor do tamanho da matriz ou menor
 * Neste procedimento não há checagem de erros.
 */

int main(void)
{
  int v[T_MATRIZ],aux;
  Gerador(v,0,9);
  for(aux=0; aux<T_MATRIZ; aux++)
    printf("\n%i",v[aux]);
  getchar();
  return(0);
}

/* Troca valores */
void Troca(int *dest, int *font)
{
  int temp=*dest;
  *dest=*font;
  *font=temp;
}

void Gerador(int *matriz, int inicio, int fim)
{
  int indice,cont,aux;
  /* Inicia a matriz */
  for(cont=inicio,aux=0; cont<=fim; cont++,aux++)
    matriz[aux]=cont;
  indice=aux;   /* Tamanho da matriz */
  /* Embaralha os números */
  srand(clock());
  for(cont=inicio, aux=0; cont<=fim; cont++, aux++)
    Troca(&matriz[aux],&matriz[rand()%indice]); /* Troca a posição */
}

A ideia é imaginar que você tem um chapéu com todos os números, que serão misturados e pegos um por um.

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

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
Link para o comentário
Compartilhar em outros sites

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