Ir ao conteúdo
  • Cadastre-se

Portugol Jogo da Forca (meu programa fica em um loop infinito)


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Estou fazendo um trabalho onde eu tenho que fazer um jogo da forca, no qual a palavra tem que ser retirada de um arquivo

e o usuário pode pedir dicas desse arquivo, porém eu nem cheguei na parte das dicas meu programa entra em loop infinito 

na parte em que em tese eu deveria digitar as letras da palavra, que deveriam vir do arquivo, eu não estou conseguindo resolver esse loop

se alguém puder me ajudar agradeceria muito.

 

1509542121_Capturadetela2021-06-07204842.png.c5fd7a526af7b011686388f995d4655c.png

programa
{
    inclua biblioteca Texto --> txt
    inclua biblioteca Util --> ut
    inclua biblioteca Arquivos --> arq
    
    funcao inicio()
    {
        jogo()
    }

     
    }

    funcao jogo()
    {
        inteiro indice, auxiliar, tamanho
        cadeia entrada
        cadeia linha, letra,formar_palavra[100] 
        logico acertou, repetiu
        inteiro acertos,erros
        inteiro arquivo = arq.abrir_arquivo("./jogo.txt", arq.MODO_LEITURA)

        linha = arq.ler_linha(arquivo)
        tamanho = ut.numero_elementos(formar_palavra)
        acertos = tamanho
        erros = 6

        para(arquivo = 0; arquivo < tamanho; arquivo++)
        {
            formar_palavra[arquivo]= "_" 
        }

        enquanto(acertos > 0 e erros >0)

          escreva("\nDigite Uma Letra","\nSuas tentativas restantes são:",erros)
          
        para(arquivo = 0; arquivo < tamanho; arquivo++)
        {
            escreva(formar_palavra[arquivo])
        }

        escreva(" :")
        leia(letra)

        acertou = falso
        repetiu = falso

        para(arquivo = 0; arquivo < tamanho; arquivo++)
        {
            se(letra == formar_palavra[arquivo])
            {
                se(formar_palavra[arquivo] == letra)
                {
                    repetiu = verdadeiro
                }
                
                acertou = verdadeiro
                formar_palavra[arquivo] = letra
                acertos--            
            }
        }
          se(repetiu == verdadeiro)
          {
              escreva("\nVocê ja digitou essa letra\n\n")
          }
        senao se(acertou == verdadeiro)
        {
            escreva("\nVocê acertou continue !!!\n\n")
        }
        senao
        {
            erros--
            escreva("\nVocê errou tente novamente\n\n")
        }

        se(acertos == 0)
         {
        escreva("\nParabéns você acertou a palavra '-' ")
        para(arquivo = 0; arquivo < tamanho; arquivo++)
        {
            escreva(formar_palavra[arquivo])
        }
         
        }

         se(erros == 0)
         {
             escreva("\nQue pena não foi dessa vez tente a sorte novamente\n\n")
         }
            arq.fechar_arquivo(arquivo)
    }

    
}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

@RenanMusico, o segredo é: sempre mantenha seu código indentado. Vide:

 

programa
{
	inclua biblioteca Texto --> txt
	inclua biblioteca Util --> ut
	inclua biblioteca Arquivos --> arq
    
	funcao inicio()
	{
		jogo()
	}

	funcao jogo()
	{
		inteiro indice, auxiliar, tamanho
		cadeia entrada
		cadeia linha, letra,formar_palavra[100] 
		logico acertou, repetiu
		inteiro acertos,erros
		inteiro arquivo = arq.abrir_arquivo("./jogo.txt", arq.MODO_LEITURA)
		
		linha = arq.ler_linha(arquivo)
		tamanho = ut.numero_elementos(formar_palavra)
		acertos = tamanho
		erros = 6
		
		para(arquivo = 0; arquivo < tamanho; arquivo++)
		{
			formar_palavra[arquivo]= "_" 
		}
		
		enquanto (acertos > 0 e erros >0)
			escreva("\nDigite Uma Letra","\nSuas tentativas restantes são:",erros)
		
		para (arquivo = 0; arquivo < tamanho; arquivo++)
		{
			escreva(formar_palavra[arquivo])
		}
		
		escreva(" :")
		leia(letra)
		
		acertou = falso
		repetiu = falso
		
		para(arquivo = 0; arquivo < tamanho; arquivo++)
		{
			se(letra == formar_palavra[arquivo])
			{
				se(formar_palavra[arquivo] == letra)
				{
					repetiu = verdadeiro
				}
		
				acertou = verdadeiro
				formar_palavra[arquivo] = letra
				acertos--            
			}
		}
	
		se(repetiu == verdadeiro)
		{
			escreva("\nVocê ja digitou essa letra\n\n")
		}
		senao se(acertou == verdadeiro)
		{
			escreva("\nVocê acertou continue !!!\n\n")
		}
		senao
		{
			erros--
			escreva("\nVocê errou tente novamente\n\n")
		}
		
		se(acertos == 0)
		{
			escreva("\nParabéns você acertou a palavra '-' ")
			para(arquivo = 0; arquivo < tamanho; arquivo++)
			{
				escreva(formar_palavra[arquivo])
			}	
		}
		
		se(erros == 0)
		{
			escreva("\nQue pena não foi dessa vez tente a sorte novamente\n\n")
		}
		
		arq.fechar_arquivo(arquivo)
	}   
}

 

Oh! Aqui:

image.png

 

Você colocou para ficar repetindo essa linha... :)

 

 

Link para o comentário
Compartilhar em outros sites

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