Ir para conteúdo
Fórum Script Brasil
  • 0

Jogo da forca


bortolotto11

Pergunta

Bom galera, estou com um problema para resolver com esse jogo.

Quando digito a opcao um para jogar, ele corre direto para a parte de adivinhar as palavras o que eu posso fazer pra corrigir? e quando peco para voltar apos este erro ele tambem não volta.

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
int main ()
{
char tam_palavra,palavra[25],letra[25],lacuna[25]="_";
int vida=6,letra_errada,i,letras_acertadas=0;
int op;
char resp;
do
{
system("cls");
printf("\n\t\t\t\tJOGO DA FORCA\n\n\n\n\n\n\n");
printf("\n1-JOGAR");
printf("\n2-INSTRUCOES");
printf("\n3-AUTORES");
printf("\n4-SAIR \n\n\n\n");
printf("\nDIGITE UMA OPCAO\n");
scanf ("%d", &op);
if (op==1)
{
do
{system ("cls");
printf("\n Voce vai comecar a jogar");
printf("\n\nDigite a palavra para ser usada na forca:\n\n");
gets(palavra);
system("cls");
for(i=0;i<strlen(palavra);i++)
lacuna='-';
tam_palavra=strlen(palavra);
while(vida>0)
{
letra_errada=0;
printf("\n %s \n",lacuna);
printf("\n Digite uma Letra: ");
gets(letra);
for(i=0;i<strlen(palavra);i++)
{
if(letra[0]==palavra)
{
lacuna=palavra;
letras_acertadas++;
letra_errada++;
}
}
if(letra_errada==0) {
vida=vida-1;
if(vida==0) {
printf("\n\n GAME OVER!!!! VOCE FOI ENFORCADO!");
printf("\n A PALAVRA CORRETA ERA: %s",palavra);
break;
}
else
printf("\n ERROOOOU! RESTAM %d VIDA(S)",vida); }
else{
if(letras_acertadas==tam_palavra) {
printf("\n\n ACERTOOOU! VOCE GANHOU!");
printf("\n A PALAVRA CORRETA E: %s",palavra);
break;}
else {
printf("\n VOCE ACERTOU UMA LETRA!");
}
}
}
printf("\n\n");
system("pause");
printf ("\n Deseja voltar (s/n) ?");
scanf (" %s", &resp);
}while (resp=='n');
}
if (op==2)
{
do
{system ("cls");
printf("\n\t\t\t\tJOGO DA FORCA\n\n\n");
printf("O objetivo deste jogo e descobrir uma palavra adivinhando as letras que ela possui. A cada rodada, os jogadores");
printf(" irao simultaneamente escolher uma letra que suspeitem fazer parte da palavra. Caso a palavra contenha esta letra,");
printf(" sera mostrado em que posicao o posicoes ela esta. Entretanto, caso esta letra não exista na palavra, sera desenhada uma");
printf(" parte do corpo do boneco do jogador. Se todas as 6 partes corpo do boneco estiverem desenhadas, o jogador");
printf(" estara fora da partida\n\n\n");
printf ("\n Deseja voltar? (s/n)");
scanf (" %s", &resp);
}while (resp=='n');}
if (op==3)
{do
{
system ("cls");
printf("\n\t\t\t\tJxxxx\n\n");
printf("\n-xxxxxx\n");
printf("\n-Axxxx\n");
printf("\n-xxxxxx\n");
printf("\n-xxxxxxx\n");
printf("\n-xxxxxx\n");
printf("\n-16/06/2015\n");
printf("\n-xxxxxx\n");
printf("\n-xxxxxx\n");
printf("\n-xxxxx\n");
printf("\n-xxxx\n\n\n");
printf ("\n Deseja voltar? (s/n)");
scanf (" %s", &resp);
}while (resp=='n');}
}while(op==0);
return 0;
}
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá. Vou direto no ponto: Do modo como está seu código fica difícil alguém se animar a ajudar. 

Em C é altamente recomendável fazer o correto uso das chaves, para que seu código fique mais claro para quem olha p ele e tbém mais fácil de se entender.

Então, vou responder a sua 1ª pergunta, depois, se quiser q eu prossiga te ajudando poste novamente seu código, mas usando do modo adequado as chaves, ok?

É o seguinte. O motivo do 1º erro é q está sendo passado valores "sujos" para o comando de entrar com uma palavra.

Para resolver isso faz assim: Crie um ponteiro do tipo char desse modo no início do código:

char *limparBuffer;

Depois, faz assim:

printf("\nDIGITE UMA OPCAO\n");
scanf ("%d", &op);
scanf("%c", &limparBuffer); // essa linha é ignorada pelo compilador, serve para limpar o q chamamos de buffer de entrada

Depois, faz o mesmo nessa parte do código: ( não recomendo o uso do gets() para se ler uma String, já que o mesmo é considerado um comando perigoso e nem está mais sendo aceito nos compiladores atuais, use o fgets() ou mesmo o scanf() )

Dessa forma:

printf("\n\nDigite a palavra para ser usada na forca: ");
scanf("%s" palavra);
scanf("%c" &limparBuffer); // aqui novamente o nosso comando para limpar o buffer de estrada

Feito isso, se puder e quiser ajuda poste novamente seu código, mas dessa vez fazendo um bom uso das chaves, ok?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...