Ir ao conteúdo
  • Cadastre-se

rodrigo springfield

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

4
  1. Consegui resolver o problema O código ficou assim #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> #include <conio.h> int erros=0,contador=0,acerto=0, i, y; char pergunta[20]; char resposta[10]={'_','_','_','_','_','_','_','_','_','_'}; char palavra[]={'_','_','_','_','_','_','_','_','_','_'}; char cabeca=' '; char tronco=' '; char bracesq=' ',bracdir=' ',cabeca2='ô'; char pernesq=' ',perndir=' ',tronco2='|'; char bracdir2='||',bracesq2='||',pernesq2='//',perndir2='\\'; struct Contador{ int acertou; char letra; }conter; void lerpergunta(){//função para ler a pergunta FILE *f; f=fopen ("pergunta.foc","r"); char c; while(1){ c=fgetc(f); if(c==EOF){ break; } printf("%c",c); } printf("\n"); fclose(f); } void menu(){ printf("----------- Bem vindo ao Jogo da Forca 2.0 -----------\n"); printf("Seu objetivo e advinhar a palavra que esta escondida\n"); } void desenho(){ printf(" _______ \n" ); printf(" |/ | \n" ); printf(" | %c \n",cabeca ); printf(" | %c \n",tronco ); printf(" | %c %c \n",bracesq,bracdir); printf(" | %c %c \n",pernesq,perndir); printf(" | \n" ); printf("_|___ " ); for (i=0; i<10; i++){ printf("%c ", palavra[i]); } } void lerResposta(){ FILE *f; f=fopen ("resposta.foc","r"); char c; int cont=0; while(1){ c=fgetc(f); if(c==EOF){ break; } resposta[cont] = c; cont++; } printf("\n"); fclose(f); printf("\n"); } void boneco(){ if(erros==1){ cabeca=cabeca2; } if(erros==2){ tronco=tronco2; cabeca=cabeca2; } if(erros==3){ tronco=tronco2; cabeca=cabeca2; bracesq=bracesq2; } if(erros==4){ tronco=tronco2; cabeca=cabeca2; bracesq=bracesq2; bracdir=bracdir2; } if(erros==5){ tronco=tronco2; cabeca=cabeca2; bracesq=bracesq2; bracdir=bracdir2; pernesq=pernesq2; } if(erros==6){ tronco=tronco2; cabeca=cabeca2; bracesq=bracesq2; bracdir=bracdir2; pernesq=pernesq2; perndir=perndir2; printf("\nVoce foi enforcado\n"); } } int main(){ setlocale(LC_ALL,""); menu(); lerpergunta(); lerResposta(); do{ boneco(); desenho(); fflush(stdin); if(erros<6){ printf("\nDigite uma letra: "); conter.letra= getch(); } conter.acertou=0;// sinaliza que achou a letra for (i=0;i<10; i++){ if (resposta[i] == conter.letra){ printf("\nContem essa letra na palavra!\n"); palavra[i] = resposta[i]; acerto++; conter.acertou=1; } } for (i=0;i<10; i++){ if (palavra[i] == conter.letra){ acerto--; } } palavra[i]='\0';// comando para não dar erro e indica o fim da string if(conter.acertou==0 ){ erros++; /* soma quantos erros */ if(erros < 6) printf("\n Letra errada!\n"); } y=0; for(i=0; i<10; i++){ if(resposta[i]==palavra[i]){ y++; } } if(y==10){ printf("\nVocê ganhou!!!"); exit(0); } }while(erros < 7); return 0; }
  2. Muito obrigado pela ajuda Devair No arquivo a resposta é Inglaterra.
  3. Consegui resolver o problema da marcação do bonequinho da forca. Agora o programa faz a marcação corretamente. Só não consegui resolver o do contador. Ficou assim o código da int main int main(){ char acertouletra= 0; setlocale(LC_ALL, "Portuguese"); menu(); lerpergunta(); lerResposta(); while(erros<=6) { desenho(); fflush(stdin); printf("\nDigite uma letra:\n"); letra = getch(); for (i=0;i<10; i++) { if (resposta[i] == letra) { palavra[i] = resposta[i]; acertouletra=1; } } if(acertouletra==1){ printf("\nLetra contem na palavra\n"); acerto++; } else{ printf("\nResposta errada\n"); erros++; boneco(); } acertouletra=0; if(acerto==9){ printf("\nParabéns, você descobriu a palavra!\n"); printf("\nA palavra secreta é Inglaterra\n"); exit(0); } for (i=0;i<10; i++) { printf("%c ", palavra[i]); } } return 0; }
  4. Olá pessoal, tudo bom? Estou criando um jogo da forca em C e estou enfrentando 2 problemas. O primeiro é a condição de derrota que eu criei. Mesmo se o usuário digitar uma letra certa, o programa dá a resposta como certa e errada ao mesmo tempo. O boneco vai sendo marcado na forca. Eu tenho que tirar ela de dentro do laço de repetição? E a outra dúvida que tenho é como parar o contador de acertos, pois se o usuário digitar uma letra mais de uma vez, que ela já tenha digitada e que exista na palavra, o contador segue sendo incrementado. Como eu poderia resolver isso? Falta apenas esses dois pontos para eu terminar o projeto. Agradeço desde já pela ajuda. Abração! #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> #include <conio.h> int erros=0, acerto=0, i; char pergunta[20]; char resposta[]={'_','_','_','_','_','_','_','_','_','_'}; char letra; char palavra[]={'_','_','_','_','_','_','_','_','_','_'}; int contador=0; char cabeca=' '; char tronco=' '; char bracesq=' ', bracdir=' '; char pernesq=' ', perndir=' '; char cabeca2='ô'; char tronco2='|'; char bracesq2='||', bracdir2='||'; char pernesq2='//', perndir2='\\'; void lerpergunta(){//função para ler a pergunta FILE *f; f=fopen ("pergunta.foc","r"); char c; while(1){ c=fgetc(f); if(c==EOF){ break; } printf("%c",c); } printf("\n"); fclose(f); } void menu(){ printf("\n----------- Bem vindo ao Jogo da Forca 2.0-----------\n"); printf("\n\nSeu objetivo e advinhar a palavra que esta escondida"); printf("\n\n"); } void desenho(){ printf("\n\n"); printf(" _______ \n"); printf(" |/ | \n"); printf(" | %c\n", cabeca); printf(" | %c \n", tronco); printf(" | %c %c \n",bracesq,bracdir); printf(" | %c %c \n",pernesq, perndir); printf(" | \n"); printf("_|___ \n"); printf("\n\n"); } void lerResposta(){ FILE *f; f=fopen ("resposta.foc","r"); char c; int cont=0; while(1){ c=fgetc(f); if(c==EOF){ break;} resposta[cont] = c; cont++; } printf("\n"); fclose(f); printf("\n"); } void boneco(){ if(erros==1){ cabeca=cabeca2; } if(erros==2){ tronco=tronco2; } if(erros==3){ bracesq=bracesq2; } if(erros==4){ bracdir=bracdir2; } if(erros==5){ pernesq=pernesq2; } if(erros==6){ perndir=perndir2; printf("\nVoce foi enforcado"); } } int main(){ setlocale(LC_ALL, "Portuguese"); menu(); lerpergunta(); lerResposta(); while(erros<=6) { desenho(); fflush(stdin); printf("\nDigite uma letra:\n"); letra = getch(); for (i=0;i<10; i++) { if (resposta[i] == letra) { printf("\nLetra contem na palavra!\n"); palavra[i] = resposta[i]; acerto++; } else if(acerto==10){ printf("\n\nParabéns, você acertou a palavra garotinho(a)!\n"); exit(0); } } if(resposta[i]!=letra){ printf("\nLetra errada!\n"); erros++; boneco(); } for (i=0;i<10; i++) { printf("%c ", palavra[i]); } } return 0; }

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