dgadelha / Portugol-Webstudio

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

Erro #275

Open Vitorcunh opened 3 weeks ago

Vitorcunh commented 3 weeks ago

Descrição do problema

O código estar dando erro, porém estar rodando a aplicação como quero, porque ?

Código

programa
{
    // Definindo a matriz do labirinto 5x5 e as posições iniciais do explorador e do tesouro
    inteiro matriz[5][5]
    inteiro posX = 0, posY = 0
    inteiro tesouroX = 4, tesouroY = 4
    inteiro parede = 1, caminhoLivre = 0

    // Função principal
    funcao inicio()
    {
        // Inicializar o labirinto com paredes e caminhos livres
        inicializarLabirinto()

        // Definindo a posição do tesouro
        matriz[tesouroX][tesouroY] = 2

        // Laço "Enquanto-Faça" para movimentar o explorador até encontrar o tesouro
        enquanto(matriz[posX][posY] != 2)
        {
            escreva("Explorador está na posição: (", posX, ", ", posY, ")\n")

            // Simulação de movimento
            moverExplorador()

            // Verifica se a posição atual ainda está dentro dos limites
            se (posX < 0 ou posX >= 5 ou posY < 0 ou posY >= 5)
            {
                escreva("Erro: O explorador saiu dos limites da matriz.\n")
                interrompa
            }
        }

        escreva("Explorador encontrou o tesouro na posição: (", posX, ", ", posY, ")!")
    }

    // Função para inicializar o labirinto
    funcao inicializarLabirinto()
    {
        // Inicializa o labirinto com paredes (1) e caminhos livres (0)
        para (inteiro i = 0; i < 5; i++)
        {
            para (inteiro j = 0; j < 5; j++)
            {
                matriz[i][j] = parede
            }
        }

        // Define alguns caminhos livres
        matriz[0][0] = caminhoLivre
        matriz[0][1] = caminhoLivre
        matriz[1][1] = caminhoLivre
        matriz[2][1] = caminhoLivre
        matriz[2][2] = caminhoLivre
        matriz[2][3] = caminhoLivre
        matriz[3][3] = caminhoLivre
        matriz[4][3] = caminhoLivre
    }

    // Função para mover o explorador
    funcao moverExplorador()
    {
        // Tenta mover para baixo se possível
        se (posX + 1 < 5 e matriz[posX + 1][posY] == caminhoLivre)
        {
            posX++
        }
        // Se não puder, tenta mover para a direita
        senao se (posY + 1 < 5 e matriz[posX][posY + 1] == caminhoLivre)
        {
            posY++
        }
        // Se não houver movimentos válidos, interrompe
        senao
        {
            escreva("Explorador está preso e não pode se mover!\n")
            interrompa
        }
    }
}

Comentários adicionais

No response