dgadelha / Portugol-Webstudio

IDE online para o Portugol
https://portugol.dev
GNU General Public License v3.0
273 stars 57 forks source link

Erro sem sentido #323

Closed lala29mieow closed 1 month ago

lala29mieow commented 1 month ago

Descrição do problema

ao tentar executar o código, um IDE exibe um erro de sintaxe ao usar a função "retornar"

Código

// Programa: Exploração de Labirinto em Portugol

programa
{
    // Definindo a matriz do labirinto (5x5)
    inteiro labirinto[5][5]
    inteiro posX = 0, posY = 0 // posição inicial do explorador
    inteiro tesouroX, tesouroY // posição do tesouro

    funcao inicio()
    {
        // Inicializar o labirinto com valores aleatórios e posicionar o tesouro
        inicializar_labirinto()

        // Loop "Enquanto-Faça" para a exploração do labirinto
        enquanto (posX != tesouroX ou posY != tesouroY)
        {
            // Exibe a posição atual do explorador e as instruções
            escrever("Você está na posição: [", posX, "][", posY, "]\n")
            escrever("Escolha o próximo movimento: \n")
            escrever("1 - Cima, 2 - Baixo, 3 - Esquerda, 4 - Direita\n")

            // Ler a escolha do movimento
            inteiro movimento
            leia(movimento)

            // Atualizar posição do explorador com base no movimento escolhido
            mover_explorador(movimento)
        }

        escrever("Parabéns! Você encontrou o tesouro na posição [", tesouroX, "][", tesouroY, "]!\n")
    }

    // Função para inicializar o labirinto e posicionar o tesouro
    funcao inicializar_labirinto()
    {
        // Coloca 1 (parede) ou 0 (caminho livre) nas posições aleatoriamente
        para (inteiro i = 0; i < 5; i++)
        {
            para (inteiro j = 0; j < 5; j++)
            {
                se (i == 0 e j == 0)
                {
                    labirinto[i][j] = 0 // posição inicial sempre livre
                }
                senao
                {
                    labirinto[i][j] = aleatorio(2) // 0 ou 1
                }
            }
        }

        // Posiciona o tesouro em uma posição aleatória
        tesouroX = aleatorio(5)
        tesouroY = aleatorio(5)
        labirinto[tesouroX][tesouroY] = 2 // tesouro representado por 2
    }

    // Função para movimentar o explorador de acordo com a escolha
    funcao mover_explorador(inteiro movimento)
    {
        inteiro novaX = posX, novaY = posY

        // Atualiza a posição do explorador conforme o movimento
        escolha (movimento)
        {
            caso 1: // Mover para cima
                novaX = posX - 1
            caso 2: // Mover para baixo
                novaX = posX + 1
            caso 3: // Mover para esquerda
                novaY = posY - 1
            caso 4: // Mover para direita
                novaY = posY + 1
            caso contrario:
                escrever("Movimento inválido!\n")
                retornar
        }

        // Verifica se a nova posição é válida
        se (novaX >= 0 e novaX < 5 e novaY >= 0 e novaY < 5)
        {
            se (labirinto[novaX][novaY] == 1)
            {
                escrever("Bateu em uma parede! Escolha outro movimento.\n")
            }
            senao
            {
                posX = novaX
                posY = novaY
            }
        }
        senao
        {
            escrever("Movimento fora do labirinto! Escolha outro movimento.\n")
        }
    }
}

Comentários adicionais

No response

dgadelha commented 1 month ago

Olá,

O correto é usar a palavra-chave retorne, não retornar. Ao invés de escrever, é escreva. E a função aleatorio não existe, você precisa incluir a biblioteca Util (inclua biblioteca Util) e usar a Util.sorteia(minimo, maximo).