Prévia do material em texto
Relatório do Programa - Labirinto com Estrutura "Enquanto-Faça"
Introdução
Este relatório descreve o desenvolvimento e o funcionamento de um programa
escrito em Portugol, cujo objetivo é simular a exploração de um labirinto 5x5.
O jogador é representado como um explorador que deve encontrar um tesouro
escondido no labirinto, enfrentando caminhos livres e limites de
movimentação. O programa utiliza a estrutura de repetição "enquanto-faça"
para manter a exploração até que o jogador encontre o tesouro.
Objetivo
Implementar um labirinto 5x5 em forma de matriz, com a posição do tesouro
definida aleatoriamente.
Utilizar a estrutura de repetição "enquanto-faça" para manter o jogo em
execução até o tesouro ser encontrado.
Permitir a movimentação do jogador pelas teclas (w - cima, s - baixo, a -
esquerda, d - direita).
Aplicar lógica de programação, uso de matrizes e controle de fluxo com
condições.
Passo a Passo do Código
Logo no início, declaramos as variáveis principais do programa:
portugol
Copiar código
inteiro labirinto[5][5] // Matriz do labirinto 5x5
inteiro posX = 0, posY = 0 // Posição inicial do explorador (0,0)
inteiro tesouroX, tesouroY // Posição aleatória do tesouro
caractere movimento // Para capturar a entrada do jogador
logico encontrouTesouro = falso // Indica se o tesouro foi encontrado
A matriz labirinto[5][5] representa o labirinto com 25 posições.
As variáveis posX e posY indicam a posição atual do explorador.
tesouroX e tesouroY armazenam a posição aleatória onde o tesouro será
colocado.
A variável encontrouTesouro controla a execução do loop principal.
Geração Aleatória do Tesouro
A função sorteiaTesouro() gera a posição do tesouro usando a função
aleatorio(). O objetivo é garantir que o tesouro esteja em uma posição aleatória
diferente a cada execução do programa.
portugol
Copiar código
funcao sorteiaTesouro()
{
tesouroX = inteiro(aleatorio(5))
tesouroY = inteiro(aleatorio(5))
// Impede que o tesouro apareça na posição inicial (0,0)
se (tesouroX == 0 && tesouroY == 0)
{
tesouroX = 4
tesouroY = 4
}
labirinto[tesouroX][tesouroY] = 2 // Marca o tesouro na matriz
}
Se a posição gerada for (0,0), o tesouro é colocado na posição (4,4) para
garantir que ele não esteja na posição inicial.
Loop Principal do Programa - Estrutura "enquanto-faça"
O loop principal mantém o jogo rodando até que o explorador encontre o
tesouro.
portugol
Copiar código
enquanto (encontrouTesouro == falso)
{
limpaTela() // Limpa a tela para atualizar o labirinto
mostraLabirinto() // Mostra o estado atual do labirinto
escreva("\nEscolha um movimento (w: cima, a: esquerda, s: baixo, d: direita):
")
leia(movimento) // Lê o movimento do jogador
moverExplorador(movimento) // Move o explorador com base no comando
verificaTesouro() // Verifica se o tesouro foi encontrado
}
• limpaTela(): Atualiza a tela a cada movimento.
• mostraLabirinto(): Exibe a matriz atualizada com a posição do jogador
e os caminhos livres.
• leia(movimento): Lê o comando do jogador para mover o explorador.
• moverExplorador(movimento): Executa a movimentação do
explorador.
• verificaTesouro(): Verifica se a posição atual do explorador coincide
com a posição do tesouro.
Função de Movimentação do Explorador
A função moverExplorador() permite que o jogador se mova pela matriz com as
teclas indicadas:
portugol
Copiar código
funcao moverExplorador(caractere movimento)
{
se (movimento == 'w' && posX > 0) // Para cima
{
posX = posX - 1
}
senao se (movimento == 's' && posX 0) // Para a esquerda
{
posY = posY - 1
}
senao se (movimento == 'd' && posY