Ir ao conteúdo

Posts recomendados

Postado

Boa noite, alguém pode me ajudar a completar esse código abaixo, sou iniciante e não sei como eu poderia completa-lo. aceito também se identificarem melhorias nele.

 

código abaixo:

#include <stdio.h>
#include <string.h>
#include <locale.h>
                         

int main() {    
    char resposta[20];  
    int erros;          
    int acertos;         
    char letra;          
    int i, j;            
    int max;
           
 
                          
    setlocale(LC_ALL, "Portuguese");
    printf("************ Jogo da Forca ************\n");        
    printf("************** Jogador 1 **************\n\n");
    printf("Utilize apenas letras minúsculas.\n");
    printf("Máximo de 20 letras\n\n");

    letra = ' '; max = 1;             
    for (i = 1; i <= 20; i++) {   
        resposta = ' ';   
    }
    erros = 0; acertos = 0;

    printf("Digite a palavra secreta: ");
    scanf (" %s", resposta);
    max = strlen (resposta);
    system("clear||cls");  
        
    printf("************ Jogo da Forca ************\n");   
    printf("************** Jogador 2 **************\n\n");
    printf("Utilize apenas letras minúsculas.\n");
    printf("Limite de 6 erros. Palavra de até 20 letras\n\n");

    while ( erros < 6 )    
    {
          printf("Digite uma letra: ");
          scanf (" %c", &letra);
          j = 0;
          for (i = 0; i <= max; i++)
          {
               if (resposta == letra)
               {
                   acertos++; j++;
                   printf ("\nAcertos: %d - Erros: %d\n",acertos, erros);
               }
          }
          if (j <= 0)      
                erros++;

\* ------------------- Aqui falta a parte responável pela verificação de vitoria ou derrota ----------------------*/

\* -------------------------------------- Final da Verificação ----------------------------------------------------------------*/

    }
    return (0);
}

 

  • Amei 1
Postado

@carlos.bozza      para ver se ganhou verifique a quantidade de acertos , se os acertos forem iguais ao tamanho da palavra então ganhou pois acertou todas as letras , então seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
#include <ctype.h>
#define cls system("clear||cls");
void gotoYX(int x,int y){
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x,y});
}
void cores(int l ,int f){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),l+(f<<4 ));
}
void visualizacao(char viz[] ){
    int i;
    cores(15,0);
    for (i=0; i<strlen(viz); i++ ){
        printf("%c ",viz[i]);
    }
    printf("\n\n");
}
int main() {
    do{
        char secreta[ 20]={""},
             resposta[20]={""},
             pista[20], letra ;
        int  erros=0,acertos=0,
             i,j,flag,max=1   ;
        setlocale(LC_ALL, "Portuguese");
        cores(14,0);
        printf("************ Jogo da Forca ************\n");
        printf("************** Jogador 1 **************\n\n");
        printf("Máximo de 20 letras\n\n");
        printf("Digite a palavra secreta: ");
        scanf (" %s", secreta);
        printf("Uma Pista ");
        scanf("%s",pista);
        max = strlen (secreta);
        for(i=0;i<max; i++)
            resposta[i] = '_';
        cls
        printf("************ Jogo da Forca ************\n");
        printf("************** Jogador 2 **************\n\n");
        printf("Limite de 6 erros. Palavra de até 20 letras\n\n");
        cls
        cores(12,14);
        printf("\n\t  Pista -> ( %s )   \n",pista);
        Sleep(3000);
        while ( erros < 6 ){
            cores(11,0);
            cls
            gotoYX(60,6);
            printf("Acertos = %3d\n",acertos);
            gotoYX(60,5);
            printf("Erros   = %3d\n",erros);
            visualizacao(resposta);
            printf("Digite uma letra: ");
            scanf (" %c", &letra);
            flag = 0;
            for( i=0; i<max; i++ ){
                if( toupper(secreta[i]) == toupper( letra )){
                    flag = 1;
                    secreta[i] = '_';
                    resposta[i] = letra;
                    acertos++;
                }
            }
            if( ! flag ){
                erros++;
            }
            if(acertos == max){
                cls
                printf("\n\n\n");
                visualizacao(resposta);
                cores(12,15);// cor das letras e cor de fundo da tela
                Beep(1500,250);// faz um sonzinho
                printf("\n\n  Acertou Todas As Letras em %d Tentativas . . . !  \n\n",erros + acertos);
                break;  // sai do opp
            }
            else{
                if(erros == 6){
                    cores(15,12);
                    printf ("\n\nAcertos: %d - Erros: %d\n\n\n",acertos, erros);
                    Sleep(3000);
                    break;  // sai do opp
                }
            }
        }
        gotoYX(60,6);
        cores(7,0);
        printf("Acertos = %3d\n",acertos);
        gotoYX(60,5);
        printf("Erros   = %3d\n",erros);
        gotoYX(20,15);
        printf("Jogar Novamente S/N \n");
    }while( toupper((char)getch()) != 'N' );
    printf("\n\n\n");
    return 32768;
}

 

  • Curtir 1
  • Amei 1
Postado

@carlos.bozza      para terminar seu código , precisa algumas modificações , pois para verificar se ganhou , você precisa colocar um Loop que percorra todas as letras da palavra a cada letra digitada ,  então para ficar quase igual seu código ,pode ser assim  :

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
#include <ctype.h>
int main() {
    do{
        char secreta[ 20]={""},// precisa mais essa variável
             resposta[20]={""},
             letra ;
        int  erros=0,acertos=0,
             i,j,max   ;
        setlocale(LC_ALL, "Portuguese");
        printf("************ Jogo da Forca ************\n");
        printf("************** Jogador 1 **************\n\n");
        printf("Máximo de 20 letras\n\n");
        printf("Digite a palavra secreta: ");
        scanf (" %s", secreta);
        max = strlen (secreta);
        for(i=0;i<max; i++)
            resposta[i] = '_';
        system("cls");
        printf("************ Jogo da Forca ************\n");
        printf("************** Jogador 2 **************\n\n");
        printf("Limite de 6 erros. Palavra de até 20 letras\n\n");
        while ( erros < 6 ){
            printf("Acertos = %3d\n",acertos);
            printf("Erros   = %3d\n\n",erros);
            for (i=0; i<strlen(resposta); i++ ){
                printf("%c ",resposta[i]);
            }
            printf("\n\n");
            printf("Digite uma letra: ");
            scanf (" %c", &letra);
            j = 0;
            for( i=0; i<max; i++ ){// precisa desse Loop para testar a letra digitada com topdas as outras letras da palavra secreta
                if( toupper(secreta[i]) == toupper( letra )){
                    j = 1;
                    secreta[i] = '_';
                    resposta[i] = letra;
                    acertos++;
                }
            }
            if( ! j ){
                erros++;
            }
            if(acertos == max){
                system("cls");
                printf("\n\n\n");
                for (i=0; i<strlen(resposta); i++ ){// mostra as letras que acertou da palavra
                    printf("%c ",resposta[i]);
                }
                printf("\n\n");
                printf("\n\n  Acertou Todas As Letras em %d Tentativas . . . !  \n\n",erros + acertos);
                break;  // sai do Loop
            }
            else{
                if(erros == 6){
                    printf ("\n\nAcertos: %d - Erros: %d\n\n\n",acertos, erros);
                    break;  // sai do Loop
                }
            }
        }
        printf("Acertos = %3d\n",acertos);
        printf("Erros   = %3d\n",erros);
        printf("Jogar Novamente S/N \n");
    }while( toupper((char)getch()) != 'N' );
    printf("\n\n\n");
    return 32768;
}

 

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!