Ir ao conteúdo
  • Cadastre-se

VisualG Simulador Jogo Craps VisualG com erro "esperava encontrar fimalgoritimo".


Posts recomendados

Elaboração de um simulador do jogo CRAPS. Regra do jogo:-Um jogador joga dois dados. -Cada dado tem seis faces. Essas faces contém os números: 1,2,3,4,5ou6. -Depois de os dados pararem, a soma dos pontos nas faces superiores é calculada. -Se a soma for 7 ou 11 no primeiro lançamento, o jogador vence. - Se a soma for 2,3 ou 12 no primeiro lançamento ,o jogador perde. -Se a soma for 4,5,6,8,9 ou 10 no primeiro lançamento ,esta soma se tornao “ponto” do jogador. -Para vencer ,você deve continuar lançando os dados até “fazer seu ponto”.-O jogador perde se tirar um 7 antes de fazer o ponto.

 

infelizmente ocorre o erro de "esperava encontrar fimalgoritmo", como resolvo? ajudem

 

algoritmo "Simulador de Craps"
var
   dado1, dado2, soma, ponto: inteiro

funcao lancarDado(): inteiro
var
   face: inteiro
inicio
   face <- aleatorio(1, 6)
   retorne face
fim

inicio
   escreva("Simulador de Craps")
   escreval("Pressione ENTER para jogar...")
   leia()

   dado1 <- lancarDado()
   dado2 <- lancarDado()
   soma <- dado1 + dado2

   escreval("Você tirou ", dado1, " e ", dado2)
   escreval("Soma dos pontos: ", soma)

   se soma = 7 ou soma = 11 então
      escreval("Você venceu!")
   senao se soma = 2 ou soma = 3 ou soma = 12 então
      escreval("Você perdeu!")
   senao
      escreval("Seu ponto é ", soma)
      ponto <- soma

      repita
         escreval("Pressione ENTER para lançar os dados novamente...")
         leia()

         dado1 <- lancarDado()
         dado2 <- lancarDado()
         soma <- dado1 + dado2

         escreval("Você tirou ", dado1, " e ", dado2)
         escreval("Soma dos pontos: ", soma)

         se soma = 7 então
            escreval("Você perdeu!")
            pare
         senao se soma = ponto então
            escreval("Você fez seu ponto! Você venceu!")
            pare
         fimse
      ate verdadeiro
   fimse
fim

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • DougrasDen alterou o título para Simulador Jogo Craps VisualG (qm resolver ganha 5cao no pix)

@DougrasDen, boa tarde, amigo.

 

Tenta assim.

 

algoritmo "Simulador de Craps"
var
   dado1, dado2, soma, ponto: inteiro

funcao lancarDado(): inteiro
var
   face: inteiro
inicio
   face <- aleatorio(1, 6)
   retorne face
fim

inicio
   escreva("Simulador de Craps")
   escreval("Pressione ENTER para jogar...")
   leia()

   dado1 <- lancarDado()
   dado2 <- lancarDado()
   soma <- dado1 + dado2

   escreval("Você tirou ", dado1, " e ", dado2)
   escreval("Soma dos pontos: ", soma)

   se soma = 7 ou soma = 11 então
      escreval("Você venceu!")
   senao se soma = 2 ou soma = 3 ou soma = 12 então
      escreval("Você perdeu!")
   senao
      escreval("Seu ponto é ", soma)
      ponto <- soma

      repita
         escreval("Pressione ENTER para lançar os dados novamente...")
         leia()

         dado1 <- lancarDado()
         dado2 <- lancarDado()
         soma <- dado1 + dado2

         escreval("Você tirou ", dado1, " e ", dado2)
         escreval("Soma dos pontos: ", soma)

         se soma = 7 então
            escreval("Você perdeu!")
            pare
         senao se soma = ponto então
            escreval("Você fez seu ponto! Você venceu!")
            pare
         fimse
      ate verdadeiro
   fimse
fimalgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Pedroou alterou o título para Simulador Jogo Craps VisualG com erro "esperava encontrar fimalgoritimo".
  • Membro VIP

@DougrasDen, uma dica inicial que dou (lá ele) seria: vá implementando o código aos poucos. Faz um pouco e testa, faz um pouco e testa... Já evitaria esse problema... veja:

 

 

Vou me basear pela versão 3.0.6.5 do VisualG. Meio que versão padrão.

 

Em 14/06/2023 às 13:17, DougrasDen disse:

infelizmente ocorre o erro de "esperava encontrar fimalgoritmo", como resolvo? ajudem

 

Basicamente não existe o comando fim no VisualG, ou seja, assim que tivesse implementado essa função, já veria que o problema estaria nela. O erro citado ocorre porque o VisuaG não está conseguindo montar a função, daí apresenta problemas tudo! (O VisualG não compila códigos, ele vai interpretando linha por linha... por isso os erros apresentados nem sempre ficam claros.)

 

Só corrigir:

funcao lancarDado(): inteiro
var
   face: inteiro
inicio
   face <- aleatorio(1, 6)
   retorne face
fimFuncao

 

Pronto! Resolveria o erro informado.

 

Aí vai vendo os outros pontos... Ah! Ao testar essa função, verás que a sintaxe do aleatorio está em inconformidade. Essa estrutura não vai rodar... aí pararia para entender e corrigir... mais abaixo dou uma solução. 

 

OK. Ainda nesse sentido de implementar aos poucos, veja como seria mais fácil identificar que existe outro problema análogo.

 

image.png

 

 

Ou seja: "ué? Por que não funcionou? Ah! Porque ali é fimAlgoritmo". Após corrigir, veria que rodaria normalmente.... Entende? A medida que vai implementando algo novo, já testa... com o tempo vai pegando as manhas e vai testando menos... Daí precisaria ter a noção que provavelmente os erros que ocorrem seriam a partir que está implementando agora, "pois o que já está no código meio que já estão testados...".

 

Vamos seguir esse exemplo de implementando aos poucos...

 

image.png

 

Opa! Rodou, mas o leia() não funcionou. O código passou direto. Só entender o problema e tentar corrigir. Exemplo:

 

image.png

 

Resumidamente, precisaria usar uma variável qualquer... no VisualG não funciona o leia() puro; (No Pascal funciona.)

 

Observe que a ideia aqui é que não deve fazer sentido um algoritmo ter diversos erros distintos, pois alguns desses erros não eram para deixar evoluir... já vai tentando deixar pelo menos rodando sem erros de sintaxe...

 

 

Vai implementando e testando.. outro ponto:

 

Em 14/06/2023 às 14:55, Arthur Arnemann disse:
senao se soma = 2 ou soma = 3 ou soma = 12 então

 

No VisualG NÃO É possível deixar dois comandos "distintos" na mesma linha. Necessariamente precisa ficar abaixo. (Obs.: no Pascal, pai do VisualG, pode! Aqui não.)

 

Seria:

   senao
      se soma = 2 ou soma = 3 ou soma = 12 então
         escreval("Você perdeu!")

 

Aqui deve surgir outro problema... que seria a "separação das instruções do se". Pode ser que não dê erro (tenho quase certeza que dá). Usaria algo como:

 

      se (soma = 2) OU (soma = 3) OU (soma = 12) então
         escrevaL("Você perdeu!")

 

Eu particularmente deixo meus se com um parêntese principal. Ficaria assim:

 

      se ((soma = 2) OU (soma = 3) OU (soma = 12)) então
         escrevaL("Você perdeu!")

 

 

Atenção: todo se tem o seu fimSe correspondente. Precisa ter atenção nisso.

 

 

 

Sobre o problema lá do aleatório. Poderia fazer algo como:

 

funcao lancarDado(): inteiro
var
   face: inteiro
inicio
   face <- randI(6)+1
   retorne face
fimFuncao

 

 

Existem outros probleminhas. Aí tem duas opções:

 

ou refaz o código do zero. Implementando os poucos... vai pegando o que já fez como base, mas recomeçando do zero mesmo.

ou vai testando e descobrindo os problemas, e corrigindo aos poucos. Acho que dá mais trabalho.

 

O melhor dos mundo seria fazer as duas coisas. Que aí treinaria bastante.

 

Qualquer dúvida é só postar.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!