Ir para conteúdo
Fórum Script Brasil

jpivieira

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que jpivieira postou

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