Cursos / Informática para Internet / Programação Estruturada / Aula
Muito bem, temos com os caracteres “|” e “-” um delineamento da extensão do tabuleiro do jogo, porém, o mesmo encontra-se em branco. Precisamos criar paredes internas dentro do tabuleiro, certo? Que tal usarmos o caractere “@” para criar elementos do tabuleiro que formam as paredes internas do jogo no tabuleiro? Dessa forma, teremos algo como:
Agora, veja que o tabuleiro possui espaços em branco que formam os possíveis caminhos do labirinto e os “@” indicando obstáculos, ou seja, paredes que impedem a passagem da pessoa no labirinto. Porém, como podemos fazer a escolha dos locais a serem colocados esses caracteres “@”? Existem algumas formas, como deixar fixo no código, deixar o usuário escolher onde colocar os obstáculos internos ou posicioná-los de forma aleatória. Vamos escolher esta última opção?
O posicionamento aleatório dos caracteres “@” é basicamente colocar esses caracteres em posições diferentes todas as vezes que executarmos o programa Labirinto. Para isso, precisamos alterar o código inserindo primeiro uma constante para representar o caractere da parede interna (obstáculo).
Agora, para posicionar esse caractere de forma aleatória, podemos fazer a seguinte alteração no procedimento inicializarMatriz(). Alteramos o código que coloca os caracteres vazios no tabuleiro, passando de
para o seguinte trecho de código:
Note a inclusão de um comando condicional. Isso porque agora nem sempre uma posição interna do tabuleiro será inicializada com o caractere vazio (“ ”), pois pode agora receber o caractere de parede interna (“@”). A expressão booleana usada no comando condicional if faz uso da função Math.random(). Essa função retorna um número aleatório entre 0 e 1. Se você usar essa função 50 vezes, ela provavelmente irá lhe retornar 50 números distintos entre 0 e 1. Comparamos então esse valor gerado aleatoriamente com uma constante probabilidade definida da seguinte forma:
Comparar o valor gerado aleatoriamente com o valor 0.7 quer dizer que quando o número gerado for maior que 0.7, a posição em questão da matriz receberá um caractere que representa uma parede interna. Caso contrário, receberá um caractere vazio. O valor 0.7, na prática, determina que a expressão irá ser verdadeira em apenas 30% das vezes. Isso porque os números que são maiores que 0.7 representam 30% dos possíveis valores que podem ser sorteados. Como resultado, aproximadamente 30% dos caracteres do tabuleiro serão do tipo parede interna (obstáculo) e os demais serão espaços vazios.
Versão 5.3 - Todos os Direitos reservados