Ir ao conteúdo

Posts recomendados

Postado
Citação

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


	char palavrasecreta[TAMANHO_PALAVRA];
	char chutes[26];
	int chutesdados = 0;
	int letraexiste(char letra);
	int chuteserrados();
	int enforcou();
	void abertura();
	void chuta();
	int jachutou(char letra);
	int ganhou();
	void desenhaforca();
	void escolhepalavra();
	void adicionapalavra();

int letraexiste(char letra) {

	for(int j = 0; j < strlen(palavrasecreta); j++) {
		if(letra == palavrasecreta[j]) {
			return 1;
		}
	}

	return 0;
}

int chuteserrados() {
	int erros = 0;

	for(int i = 0; i < chutesdados; i++) {
		
		if(!letraexiste(chutes[i])) {
			erros++;
		}
	}

	return erros;
}

int enforcou() {
	return chuteserrados() >= 5;
}

int ganhou() {
	for(int i = 0; i < strlen(palavrasecreta); i++) {
		if(!jachutou(palavrasecreta[i])) {
			return 0;
		}
	}

	return 0;
}


void abertura() {
	printf("/****************/\n");
	printf("/ Jogo de Forca */\n");
	printf("/****************/\n\n");
}

void chuta() {
	char chute;
	printf("Qual letra? ");
	scanf(" %c", &chute);

	if(letraexiste(chute)) {
		printf("Você acertou: a palavra tem a letra %c\n\n", chute);
	} else {
		printf("\nVocê errou: a palavra NÃO tem a letra %c\n\n", chute);
	}

	chutes[chutesdados] = chute;
	chutesdados++;
}

int jachutou(char letra) {
	int achou = 0;
	for(int j = 0; j < chutesdados; j++) {
		if(chutes[j] == letra) {
			achou = 1;
			break;
		}
	}

	return achou;
}

void desenhaforca() {

	int erros = chuteserrados();

	printf("  _______       \n");
	printf(" |/      |      \n");
	printf(" |      %c%c%c  \n", (erros>=1?'(':' '), (erros>=1?'_':' '), (erros>=1?')':' '));
	printf(" |      %c%c%c  \n", (erros>=3?'\\':' '), (erros>=2?'|':' '), (erros>=3?'/': ' '));
	printf(" |       %c     \n", (erros>=2?'|':' '));
	printf(" |      %c %c   \n", (erros>=4?'/':' '), (erros>=4?'\\':' '));
	printf(" |              \n");
	printf("_|___           \n");
	printf("\n\n");

	for(int i = 0; i < strlen(palavrasecreta); i++) {

		if(jachutou(palavrasecreta[i])) {
			printf("%c ", palavrasecreta[i]);
		} else {
			printf("_ ");
		}

	}
	printf("\n");

}

void escolhepalavra() {
	FILE* f;

	f = fopen("palavras.txt", "r");
	if(f == 0) {
		printf("Banco de dados de palavras não disponível\n\n");
		exit(1);
	}

	int qtddepalavras;
	fscanf(f, "%d", &qtddepalavras);

	srand(time(0));
	int randomico = rand() % qtddepalavras;

	for(int i = 0; i <= randomico; i++) {
		fscanf(f, "%s", palavrasecreta);
	}

	fclose(f);
}


void adicionapalavra() {
	char quer;

	printf("Você deseja adicionar uma nova palavra no jogo (S/N)?");
	scanf(" %c", &quer);

	if(quer == 'S') {
		char novapalavra[TAMANHO_PALAVRA];

		printf("Digite a nova palavra, em letras maiúsculas: ");
		scanf("%s", novapalavra);

		FILE* f;

		f = fopen("palavras.txt", "r+");
		if(f == 0) {
			printf("Banco de dados de palavras não disponível\n\n");
			exit(1);
		}

		int qtd;
		fscanf(f, "%d", &qtd);
		qtd++;
		fseek(f, 0, SEEK_SET);
		fprintf(f, "%d", qtd);

		fseek(f, 0, SEEK_END);
		fprintf(f, "\n%s", novapalavra);

		fclose(f);

	}

}

int main() {

	abertura();
	escolhepalavra();

	do {

		desenhaforca();
		chuta();

	} while (!ganhou() && !enforcou());

	if(ganhou()) {
		printf("\nParabéns, você ganhou!\n\n");
				printf("               _________\n");
				printf("             .-\:      /-.\n");
				printf("            | (|:.     |) |\n");
				printf("             '-|:.     |-'\n");
				printf("               \::.    /\n");
				printf("                '::. .'\n");
				printf("                  ) (\n");
				printf("                .' '.\n");
	} else {
		printf("\nPuxa, você foi enforcado!\n");
		printf("A palavra era **%s**\n\n", palavrasecreta);

		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");
	}

	adicionapalavra();
}

 

 

  • Curtir 1
  • Amei 1
Postado

@Zomeplay O programa não é seu, você o pegou daqui.

Tente não simplesmente dizer "não está funcionando".

Provavelmente, se têm erros, os mesmos serão descritos em algum lugar do seu ambiente, basta ler, interpretar e, por fim, corrigir.

 

Alguns erros que vi aí:

Você precisa de um arquivo texto com palavras, porque o que ele faz é pegar uma palavra aleatória do arquivo.

Você precisa colocar o que está nessa biblioteca forca.h embaixo do include do time.h.

  • Curtir 1
  • Obrigado 1
Postado
17 horas atrás, Lucca Rodrigues disse:

@Zomeplay O programa não é seu, você o pegou daqui.

Tente não simplesmente dizer "não está funcionando".

Provavelmente, se têm erros, os mesmos serão descritos em algum lugar do seu ambiente, basta ler, interpretar e, por fim, corrigir.

 

Alguns erros que vi aí:

Você precisa de um arquivo texto com palavras, porque o que ele faz é pegar uma palavra aleatória do arquivo.

Você precisa colocar o que está nessa biblioteca forca.h embaixo do include do time.h.

Ta certo, so que quero usar sem colocar biblioteca forca.h, ja fiz isso, so que tem que ter um banco de dados, e nao sei fazer  

 

Postado
18 minutos atrás, Zomeplay disse:

Ta certo, so que quero usar sem colocar biblioteca forca.h, ja fiz isso, so que tem que ter um banco de dados, e nao sei fazer

eu tenho um aqui que guardei de outro tópico há muito tempo veja

 

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

int main()
{
    int i, Chances = 7, Erro, NumPalavra=0;
    char Palavra[10], Espaco[10], Letra[5];

    char BancodeDados[10][15]={
        "cavalo",
        "gato",
        "leao",
        "cachorro",
        "tigre",
        "anta",
        "papagaio",
        "vaca",
        "camelo",
        "rato"};

    /*printf("Digite a palavra secreta: ");
    gets(Palavra);*/

    srand(time(NULL));
    NumPalavra=rand() % 10;

    for(i=0;i<strlen(BancodeDados[NumPalavra]);i++)
    Palavra[i]=BancodeDados[NumPalavra][i];
    
    for(i=0;i<strlen(Palavra);i++)
    Espaco[i]='_';

    printf("############JOGO DA FORCA!#############\n\n\n");

    while(Chances>0){

        Erro=0;
        printf("\n%s\n",Espaco);
        printf("\n\nDigite a letra: ");
        gets(Letra);

        for(i=0;i<strlen(Palavra);i++){
            if(Letra[0]==Palavra[i]){
                Espaco[i]=Palavra[i];
                Erro++;//Se o erro for 1 o jogador nao ira perder as chances
            }
        }
        if(Erro==0){ //Se for 0 ele perde uma chance
            Chances--;
        }

        if(Chances==0){
        printf("\nVoce foi enforcado!\n");
        printf("\nA palavra era %s!\n", Palavra);
        }

        if(strcmp(Espaco,Palavra)==0){
            Chances=0;
            printf("\nParabens você acertou!\n");
        }
    }
    system("pause");
    return 0;
}

 

  • Curtir 3
Postado

@Zomeplay Que banco de dados? O arquivo texto com palavras?

Crie um arquivo .txt (palavras.txt) na mesma pasta em que está a main. Preencha com 1 palavra por linha.

Provavelmente você vai ter que informar o programa quantas palavras existem dentro de seu arquivo pra que ele possa usar a função rand().

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!