Ir para conteúdo
Fórum Script Brasil

jpivieira

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por jpivieira

  1. Galera, esse é um script de um jogo da forca com dois jogadores na linguagem C. Porém eu estou com um pequeno problema: o Jogador 2 tem 5 chances para acertar a palavra proposta pelo Jogador 1, porém o programa só está rodando 4 chances. Gostaria de saber se alguém pode identificar o erro e, se possível, me indicar uma solução. Desde já agradeço <3

     

     

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

    int main(){
        char palavra[50], jogador1[50], jogador2[50], espaco[50]="-", erros[50]=" ", tamanho, tamanho2, letra[50], tentativa[50];
        int chances=5, caractere, caractere2=0, acertos=0, retorna;

             printf("Antes de começarmos, pedimos para que, caso não tenha lido as\n"
                    "instruções na seção 'Como jogar', feche o programa, leia-as e,\n"
                    "em seguida, volte para modo multiplayer. Caso já tenha lido, de-\n"
                    "sejamos um bom jogo aos jogadores!\n\n"
                    "Tecle 'v' para continuar...");
                    while(getchar() != 'v');
                    system("clear");

             printf("Digite o seu nome, Jogador 1: ");
             scanf("%s",&jogador1);
             printf("Digite o seu nome, Jogador 2: ");
             scanf("%s",&jogador2);
             system("clear");

             printf("Sejam bem vindos ao Jogo da Forca, %s e %s!!\n"
                    "\nTecle 'v' para continuar...",jogador1, jogador2);
                   while(getchar() != 'v');
                   system("clear");

            printf("%s, digite a palavra para o/a %s acertar: ",jogador1, jogador2);
            scanf("%s",&palavra);
            system("clear");
    ///----------------------------------------------------------------------------------------------------------------------------------------------------
    ///----------A PARTIR DAQUI COMEÇA O CÓDIGO LÓGICO. OS CÓDIGOS ACIMA ERAM APENAS AS APRESENTAÇÕES E AS PRIMEIRAS ENTRADAS---------------------------------------------
    ///----------------------------------------------------------------------------------------------------------------------------------------------

    ///----------------------------------------------------------------------------------------------------------------------------------------------
    ///A FUNÇÃO STRLEN() É A RESPONSÁVEL PELOS TESTES PARA VER SE A LETRA DIGITADA PELO JOGADOR 2 ESTÁ NO VETOR 'PALAVRA'.
    ///CRIAMOS UMA VARIÁVEL 'TAMANHO' E IGUALAMOS ELA AO STRLEN(PALAVRA), ASSIM, OS TESTES SÓ IRÃO TERMINAR QUANDO A ÚLTIMA
    ///LETRA FOR TESTADA E ENQUANTO TODAS NÃO FOREM ACERTADAS

            for(caractere=0; caractere<strlen(palavra); caractere++)
                 espaco[caractere] = '-';
                 tamanho = strlen(palavra);

    ///-----------------------------------------------------------------------------------------------------------------------------------------------------
    ///AQUI COMEÇAMOS O LAÇO WHILE QUE VAI ATÉ O FINAL DO PROGRAMA. NO CASO, ELE É CONTROLADO PELO NÚMERO DE CHANCES QUE O JOGADOR 2
    ///AINDA TEM PARA ACERTAR A PALAVRA
    ///O PRIMEIRO PRINTF IMPRIME O VETOR 'ESPACO', CORRESPONDENTE AO NÚMERO DE LETRAS DIGITADAS PELO JOGADOR 1
    ///O SEGUNDO PRINTF PEDE PARA QUE O JOGADOR 2 DIGITE UMA LETRA, QUE POR SUA VEZ SERÁ TRABALHADA DENTRO DO LAÇO WHILE
    ///O TERCEIRO PRINTF É UMA ESPÉCIE DE VETOR, QUE POR SUA VEZ GUARDA E IMPRIME AS LETRAS INCORRETAS DIGITADAS PELO JOGADOR 2

                 while(chances>0){

                       retorna=0;
                       printf("\n\tAinda restam: %d chances",chances);
                       if(chances<0){
                          system("clear");
                          printf("\n\tSuas chances acabaram");
                        }
                       printf("\n\tLetras digitadas: %s\n",erros);
                       printf("\n%s\n",espaco);
                       printf("%s, digite uma letra: ",jogador2);
                       scanf("%s",&letra);


    ///------------------------------------------------------------------------------------------------------------------------------------------------------
    ///ASSIM COMO NO PRIMEIRO FOR, NESTE ESTAMOS COMPARANDO A LETRA DIGITADA PELO JOGADOR 2 COM AS LETRAS PRESENTES NO VETOR PALAVRA, PORÉM
    ///CASO A LETRA ESTEJA DENTRO DO VETOR 'PALAVRA', ELA IRÁ SE ENCAIXAR NO VETOR 'ESPACO'.
    ///FIZEMOS COM QUE A VARIAVEL 'RETORNA' AUMENTE PARA QUE ASSIM, ELA não DIMINUA NO PROXIMO LAÇO

                       for(caractere=0; caractere<strlen(palavra); caractere++){
                           if(letra[0]==palavra[caractere]){
                              espaco[caractere] = palavra[caractere];
                                retorna++;
                                acertos++;
                           }
                       }

    ///-------------------------------------------------------------------------------------------------------------------------------------------------------
    ///--------------------------O IF A SEGUIR SO SERA REALIZADO CASO O PLAYER 2 ERRE A LETRA--------------------------------------------------------

    ///NESTE CASO, CASO O JOGADOR 1 ERRE A LETRA, A VARIAVEL 'CHANCES' IRÁ DIMINUIR E, CASO AINDA TENHA CHANCES, A LETRA DIGITADA
    ///VAI PARA O VETOR 'ERROS', CASO CONTRÁRIO ELE AINDA TERÁ UMA ÚLTIMA CHANCE DE ACERTAR A PALAVRA POR COMPLETO

                  if(retorna==0 || (chances==5 || chances==4 || chances==3 || chances==2 || chances==1)){
                     chances--;
                      if(chances==0){
                           printf("\n%s, suas chances acabaram, mas agora você tem a chance\n"
                                  "de acertar a palavra por completo, digite-a aqui: ",jogador2);
                           scanf("%s",&tentativa);
                           tamanho2 = strlen(tentativa);///AQUI CRIAMOS A VARIÁVEL 'TAMANHO2' PARA FAZER UM PONTE COM A PALAVRA ESCOLHIDA E A
                                                        ///TENTATIVA DE ACERTO POR PARTE DO JOGADOR 2
                           if(tamanho2==tamanho){
                               printf("\n%s, VOCÊ ACERTOU A PALAVRA!! VOCÊ VENCEU A RODADA!!!\n",jogador2);
                               printf("\nA palavra era: %s\n",palavra);
                            break;
                           }
                           else{
                               printf("\n\n%s, você errou a palavra. %s, VOCÊ VENCEU A RODADA!!!\n",jogador2, jogador1);
                               printf("\nA palavra correta era: %s\n",palavra);
                            break;
                           }

                     }

    ///---------------------O IF ABAIXO FOI FEITO PARA GUARDAR AS LETRAS JÁ DIGITADAS PELO JOGADOR 2--------------------------------------------------

                           else{
                                erros[caractere2] = letra[0];
                                caractere2++;
                           }
                }

    ///NO CASO ABAIXO, CASO AS LETRAS DIGITADAS E ACERTADAS FOREM DO MESMO TAMANHO QUE A VARIAVEL 'TAMANHO', IGUALADA À STRING 'PALAVRA'
    ///DIGITADA PELO JOGADOR 1, O PROGRAMA ACABA E IMPRIME O PRINTF ABAIXO

                        if(acertos==tamanho){
                           printf("PARABÉNS, %s, VOCÊ ACERTOU A PALAVRA. VOCÊ VENCEU A RODADA!!!\n", jogador2);
                           printf("\nA palavra era: %s\n",palavra);
                           break;
                        }
                        system("clear");
                  }

    ///----------------------------------------------AQUI ACABA O LAÇO WHILE-------------------------------------------------------------------------------------

       return (0);
    }

×
×
  • Criar Novo...