Se puderem me ajudem

4 respostas
A

A figura abaixo representa um labirinto formado por um array bidimensional composto por ?#? e ?.?.

# # # # # # # # # # # #
# . . . # . . . . . . #
. . # . # . # # # # . #
# # # . # . . . . # . #
# . . . . # # # . # . .
# # # # . # . # . # . #
# . . # . # . # . # . #
# # . # . # . # . # . #
# . . . . . . . . # . #
# # # # # # . # # # . #
# . . . . . . # . . . #
# # # # # # # # # # # #

(A figura não está correta, como podem ver)
Neste array, os #s representam as paredes do labirinto e os pontos representam os possíveis caminhos pelo labirinto. Os movimentos só podem ser feitos através de posições do array que contém ponto. Assumindo que haja uma saída no labirinto, deve-se criar um programa que encontre essa saída.
Durante o processo de procura da saída do labirinto, deve-se marcar a saída de alguma forma, e quando o labirinto for solucionado, deve ser apresentado na tela o labirinto com o caractere ?X? em cada posição que faz parte do caminho de saída do labirinto.
Escreva um método que permita o seu programa produzir novos labirintos de qualquer altura e largura de forma aleatória e que permita ao seu programa achar a saída nestes labirintos criados.
Substitua os ?#?s e ?.?s por uma interface gráfica (utilize cores diferentes para identificar paredes, caminhos percorridos e caminhos não percorridos).
Amigos gostaria de uma ajuda, estou com pouco tempo para desenvolver este programa, se alguém tiver um código que de uma idéia, seria de grande ajuda.
grato

EDIT - Artnol, use as tags [ code ] para mostrar texto monoespaçado (não somente código). Editei seu post para que todos posssam ver corretamente o labirinto.

4 Respostas

paulovittor23

Cara ese exercício de estrutura de dados é fantástico!
Eu fiz a memória do rato que percorre o labirinto utilizando uma pilha, onde ele armazenava os movimentos, e caso não conseguisse prosseguir ele imediatamente ia voltando as ações até encontrar uma outra possibilidade…no começo ficou lento, mas depois fui colocando umas funções heurísticas e ficou praticamente instantâneo o resultado…
Eu realmente não tenho mais ele aqui, perdi meu HD no final do ano passado, e com ele todos os meus fontes de anos =/
Mas eu recomendo que você faça o exercício, vai te trazer muitos benefícios mai pra frente!

N

artnol,

Acredito que vc não vá conseguir ajuda neste nível (faça aí pra mim!), mas se começar a desenvolver o algoritmo muita gente vai ajudá-lo nas dúvidas e dificuldades que encontrar.
O Paulo já deu uma boa idéia de por onde começar.

Mãos-a-obra e vai postando as dúvidas.

T

http://www.cs.utexas.edu/users/scottm/cs307/handouts/Slides/lec11RecursiveBacktracking-4Up.pdf

As palavras mágicas para o sr. Google da Silva Telles Paranhos lhe responder são “recursive backtracking” e “maze”.

A

O código com o labirinto pronto, já está quase terminado.
Mas não tenho nem idéia de como gerar um labirinto aleatóriamente, e garantir que exista nele um caminho que leve a saida, ou que exista uma saida.
Se puderem me dar uma luz, ficarei grato.

Criado 10 de fevereiro de 2008
Ultima resposta 11 de fev. de 2008
Respostas 4
Participantes 4