Cursos / Informática para Internet / Programação Estruturada / Aula

arrow_back Aula 10 - Jogo do labirinto parte 1 – uso de matriz

2. Tabuleiro do Jogo

Para criar um jogo de labirinto usando o modo texto, precisamos escolher caracteres para formar o que iremos chamar de tabuleiro do jogo, ou seja, do labirinto, do caminho percorrido etc.

Para delimitar a extensão do tabuleiro, usemos os caracteres “|” e “-”. No caso, o caractere “|” será usado para delimitar as paredes externas verticais do tabuleiro. O caractere “-”, por sua vez, irá delimitar as paredes externas horizontais do tabuleiro. Isso quer dizer que teremos um tabuleiro como o mostrado a seguir.

Tabuleiro em branco

O tabuleiro mostrado tem dimensão 10 x 10, ou seja, 10 linhas e 10 colunas. Aproveitando a oportunidade, existe alguma estrutura de dados que é dimensionada em termos de quantidade de linhas e colunas?

Se você não se lembrou das matrizes, ou se tem alguma dúvida na definição e uso de matrizes, releia a aula de vetores e matrizes, ok? Os conceitos apresentados naquela aula serão de grande valia para nós implementarmos o jogo do labirinto.

Vamos então começar com a parte do programa responsável por imprimir o tabuleiro vazio. Primeiro, temos que definir uma estrutura de dados para representá-lo. Essa estrutura, como já dada a dica anteriormente, é uma matriz. No caso, uma matriz de caracteres para poder armazenar os caracteres que formam o tabuleiro. Veja a seguir como isso fica no código.

Temos aí a definição de uma variável de nome tabuleiro. Como ela não está sendo declarada dentro de uma rotina (procedimento ou função), isso quer dizer que ela pode ser usada por qualquer rotina definida na classe Labirinto. Vamos escrever o programa de forma a montar e imprimir esse tabuleiro? Veja como fica.

Você conseguiu entender o funcionamento do código apresentado? Vamos a uma explicação detalhada de seu funcionamento. Primeiro, note o uso de várias constantes (variáveis declaradas com a palavra final).

Essas constantes são utilizadas para representar os caracteres especiais que utilizaremos para escrita do tabuleiro na tela em modo texto. É recomendado usar constantes nesses casos porque você evita que esses caracteres sejam espalhados pelo código do programa. Dessa forma, se quisermos mudar do caractere “-” para o sublinhado (“_”), é só fazer essa alteração na declaração da constante que todo o resto do programa já irá automaticamente usar esse novo caractere definido.

Além das constantes mostradas, temos a constante a seguir definida para representar o tamanho da matriz, considerando que a mesma sempre será quadrada. A ideia é então que o tamanho do tabuleiro (ou seja, da matriz) possa ser modificado apenas mudando o valor dessa constante. De fato, esse valor poderia até ser informado pelo usuário no início da execução do programa. Temos só que garantir que o número a ser informado pelo usuário seja maior do que 4, para gerar um tabuleiro que possa ser trabalhado realmente como um labirinto, mesmo que simples. Valores menores do que 4 gerariam tabuleiros pequenos demais para se construir um jogo de labirinto.

Em seguida, temos a definição do procedimento inicializarMatriz(), cujo objetivo é inicializar a matriz que representa o tabuleiro com caracteres que representem o conteúdo e as paredes do labirinto. Observemos a primeira parte do código desse procedimento:

Você consegue perceber quais células da matriz tabuleiro serão preenchidas com cada caractere especial de parede que foi definido (PAREDE_VERTICAL ou PAREDE_HORIZONTAL)? Observe que a variável i vai do valor 0 até o tamanho da matriz (constante TAMANHO) menos um. Considerando o tamanho 10 definido na constante TAMANHO, o valor de i vai de 0 a 9. Veja que atribuições são feitas com relação às paredes verticais:

Perceba que o que se está variando é o número da linha, da primeira até a última, considerando sempre a primeira e a última coluna. Dessa forma, o caractere “|” usado na parede vertical é usado para preencher a primeira e a última coluna da matriz. Processo similar é utilizado para a parede horizontal:

Note que o que muda em cada iteração são as colunas. Dessa forma, todas as colunas da primeira e da última linha são preenchidas com o caractere “-”, que representa uma parede horizontal do tabuleiro.

Em seguida, temos o seguinte código para preencher os elementos internos do tabuleiro com posições em branco, ou seja, caracteres vazios (“ ”):

Note que temos um laço dentro de outro laço. Você se lembra por que temos esse tipo de estrutura? Quando trabalhamos com matrizes e precisamos percorrer elementos de diferentes linhas e colunas, precisamos de dois laços, um para controlar o índice da linha e outro para controlar o índice da coluna. No caso, tanto os índices da linha (variável i) como da coluna (variável j) começam do segundo elemento (índice 1) e vão até o penúltimo elemento (índice tamanho – 2). Isso porque não queremos escrever os caracteres em branco nas bordas.

Além do procedimento de inicializar a matriz, o código do Labirinto tem um procedimento chamado imprimir() que imprime a matriz, ou seja, que percorre seus elementos e os imprime na tela. Por fim, para podermos rodar o jogo, precisamos do procedimento main() já mostrado, que inicializa a matriz com o tamanho certo e que “chama” os procedimentos de inicializar e de imprimir a matriz.

Versão 5.3 - Todos os Direitos reservados