1
resposta

FIM DO JOGO

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

// VARIAVEIS GLOBAIS

char palavrasecreta [TAMANHO_PALAVRA] ; char chutes[26]; int chutesdados = 0;

void abertura( ) {

printf("/***********************\n");
printf("/  JOGO DE FORCA  *\n");
printf("************************\n\n");

}

void chuta() {

char chute;
scanf(" %c", &chute);

chutes[chutesdados] = chute;

chutesdados++;

}

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++) {

    int achou = jachutou (palavrasecreta[i] );

    if(achou)
    {

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

        printf("_ ");
    }

}
printf("\n");

} void adicionapalavra(){

char quer;

printf("Voce 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úscula: ");
    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);

}

}

void escolhepalavra() { FILE* f;

f = fopen("palavras.txt", "r");

if(f == 0)
{
    printf("Desculpe, banco de dados nao disponivel\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);

}

int acertou(){

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

  if(!jachutou(palavrasecreta[i])){


        return 0;

    }
}
return 1;

}

int chuteserrados(){ int erros = 0;

for ( int i = 0; i < chutesdados; i++) {


    int existe = 0;

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

        if(chutes[i] == palavrasecreta[j]) {

            existe = 1;
            break;
        }
    }

    if(!existe) erros++;
}
return erros;

}

int enforcou(){

return chuteserrados () >= 5;

}

int jachutou(char letra){

int achou =0 ;

for(int j  = 0;  j < chutesdados;  j++){

    if (chutes[j] == letra){

        achou = 1;

        break;
    }
}

return achou;

}

int main(){

escolhepalavra();

abertura( );

do {

    desenhaforca();

    chuta();
}

while(!acertou() && !enforcou());
if (acertou()) {

    printf("\nParabens, voce ganhou!\n\n");

    printf("       ___________      \n");
printf("      '._==_==_=_.'     \n");
printf("      .-\\:      /-.    \n");
printf("     | (|:.     |) |    \n");
printf("      '-|:.     |-'     \n");
printf("        \\::.    /      \n");
printf("         '::. .'        \n");
printf("           ) (          \n");
printf("         _.' '._        \n");
printf("        '-------'       \n\n");
}

else { printf("\nPuxa, você foi enforcado!\n"); printf("A palavra era %s\n\n", palavrasecreta);

 printf("    _______________         \n");
printf("   /               \\       \n");
printf("  /                 \\      \n");
printf("//                   \\/\\  \n");
printf("\\|   XXXX     XXXX   | /   \n");
printf(" |   XXXX     XXXX   |/     \n");
printf(" |   XXX       XXX   |      \n");
printf(" |                   |      \n");
printf(" \\__      XXX      __/     \n");
printf("   |\\     XXX     /|       \n");
printf("   | |           | |        \n");
printf("   | I I I I I I I |        \n");
printf("   |  I I I I I I  |        \n");
printf("   \\_             _/       \n");
printf("     \\_         _/         \n");
printf("       \\_______/           \n");

} }

1 resposta

Olá, Projeto!

Pelo que entendi, você está com dúvidas sobre como finalizar o jogo de forca em C, certo? Vou te ajudar!

Para finalizar o jogo, você pode adicionar um trecho de código após o loop principal do jogo, onde você verifica se o jogador acertou a palavra ou se foi enforcado.

Se o jogador acertou a palavra, você pode exibir uma mensagem de parabéns e um desenho de comemoração. Por exemplo:

if (acertou()) {
    printf("\nParabéns, você ganhou!\n\n");
    printf("       ___________      \n");
    printf("      '._==_==_=_.'     \n");
    // ... outros desenhos de comemoração
}

E se o jogador foi enforcado, você pode exibir uma mensagem de derrota e um desenho de enforcado. Por exemplo:

else {
    printf("\nPuxa, você foi enforcado!\n");
    printf("A palavra era **%s**\n\n", palavrasecreta);
    printf("    _______________         \n");
    printf("   /               \\       \n");
    // ... outros desenhos de enforcado
}

Você pode adicionar esses trechos de código logo após o loop do-while, antes do return 0;. Assim, quando o jogo terminar, o jogador receberá uma mensagem adequada de acordo com o resultado.

Espero ter ajudado! Bons estudos!