Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

erro #341

Open
vitoriabertollo opened this issue Nov 29, 2024 · 0 comments
Open

erro #341

vitoriabertollo opened this issue Nov 29, 2024 · 0 comments
Labels

Comments

@vitoriabertollo
Copy link

Descrição do problema

⛔ O seu código possui 4 erros de compilação:

  • A função 'encontrouTesouro' deve retornar um valor (linha 124, posição 4)
  • A função 'gerarNumeroAleatorio' deve retornar um valor (linha 134, posição 4)
  • Variável não declarada: retornar (linha 129, posição 12)
  • Variável não declarada: retornar (linha 131, posição 8)

⚠️ Durante essa fase experimental, o código ainda será executado mesmo com erros, porém se não corrigi-los, a execução abaixo pode exibir mensagens de erro em inglês ou sem explicação.
Caso acredite que o erro não faça sentido, por favor, abra uma issue em https://github.com/dgadelha/Portugol-Webstudio/issues/new/choose e anexe o código que você está tentando executar.

  • O seu programa irá iniciar abaixo -

⛔ Função não declarada: simboloRelogio

Programa finalizado. Tempo de execução: 59 milissegundos

Código

programa
{
    // Declaração de variáveis globais
    inteiro labirinto[5][5]
    inteiro posX = 0, posY = 0
    inteiro tesouroX, tesouroY
    inteiro direcao // Variável para capturar o movimento do jogador

    funcao inicio()
    {
        // Inicializa o labirinto e posiciona o tesouro
        inicializarLabirinto()

        // Loop principal do jogo
        enquanto (nao encontrouTesouro())
        {
            limparTela()
            exibirLabirinto()
            escrever("\nVocê está na posição: (", posX, ", ", posY, ")")
            escrever("\nEscolha um movimento:")
            escrever("\n1 - Cima | 2 - Baixo | 3 - Esquerda | 4 - Direita")
            leia(direcao) // Captura a direção escolhida pelo jogador
            moverJogador(direcao)
        }

        // Mensagem de vitória
        limparTela()
        exibirLabirinto()
        escrever("\nParabéns! Você encontrou o tesouro na posição (", tesouroX, ", ", tesouroY, ")!")
    }

    funcao inicializarLabirinto()
    {
        // Inicializa o labirinto com caminhos livres (0) e paredes (1)
        para (inteiro i = 0; i < 5; i++)
        {
            para (inteiro j = 0; j < 5; j++)
            {
                se (gerarNumeroAleatorio(0, 100) < 30) // 30% de chance de ser uma parede
                {
                    labirinto[i][j] = 1
                }
                senao
                {
                    labirinto[i][j] = 0
                }
            }
        }

        // Garante que a posição inicial e final sejam acessíveis
        labirinto[0][0] = 0
        tesouroX = gerarNumeroAleatorio(0, 4)
        tesouroY = gerarNumeroAleatorio(0, 4)

        // Certifica que o tesouro não está na posição inicial
        enquanto (tesouroX == 0 e tesouroY == 0)
        {
            tesouroX = gerarNumeroAleatorio(0, 4)
            tesouroY = gerarNumeroAleatorio(0, 4)
        }

        labirinto[tesouroX][tesouroY] = 2 // Define o tesouro
    }

    funcao exibirLabirinto()
    {
        para (inteiro i = 0; i < 5; i++)
        {
            para (inteiro j = 0; j < 5; j++)
            {
                se (i == posX e j == posY)
                {
                    escrever(" J ") // Posição do jogador
                }
                senao se (labirinto[i][j] == 1)
                {
                    escrever(" # ") // Parede
                }
                senao se (labirinto[i][j] == 2)
                {
                    escrever(" T ") // Tesouro
                }
                senao
                {
                    escrever(" . ") // Caminho livre
                }
            }
            escrever("\n")
        }
    }

    funcao moverJogador(inteiro movimento)
    {
        inteiro novoX = posX, novoY = posY

        // Estrutura de decisão para o movimento
        escolha (movimento)
        {
            caso 1: // Cima
                novoX = novoX - 1
            caso 2: // Baixo
                novoX = novoX + 1
            caso 3: // Esquerda
                novoY = novoY - 1
            caso 4: // Direita
                novoY = novoY + 1
            caso contrario:
                escrever("\nMovimento inválido!")
        } // Fim da estrutura escolha-caso

        // Verifica se a nova posição é válida
        se (novoX >= 0 e novoX < 5 e novoY >= 0 e novoY < 5 e labirinto[novoX][novoY] != 1)
        {
            posX = novoX
            posY = novoY
        }
        senao
        {
            escrever("\nMovimento inválido ou parede encontrada!")
            esperar(1000) // Pausa para o jogador ler o aviso
        }
    }

    funcao logico encontrouTesouro()
    {
        // Retorna verdadeiro se o jogador encontrar o tesouro
        se (posX == tesouroX e posY == tesouroY)
        {
            retornar verdadeiro
        }
        retornar falso
    }

    funcao inteiro gerarNumeroAleatorio(inteiro min, inteiro max)
    {
        // Gera um número pseudoaleatório entre min e max
        retornar ((min + ((max - min + 1) * mod(simboloRelogio(), 1000) / 1000)))
    }
}

Comentários adicionais

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant