Mam taka mape, ktora jest podzielona na kwadraty:
Kod
|--1--|--2--|--3--|--4--|--5--|
1 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
2 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
3 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
4 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
5 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
1 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
2 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
3 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
4 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
5 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
Teraz, zalozmy ze chce przejsc z kwadratu 2,2 (p) do 4,5 (k) z tym ze pola oznaczone x sa nie do przejscia. Tak jak tu:
Kod
|--1--|--2--|--3--|--4--|--5--|
1 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
2 | p | | | |
| | | | | |
|-----|-----|-----|-----|-----|
3 | | x | x | |
| | | | | |
|-----|-----|-----|-----|-----|
4 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
5 | | | k | |
| | | | | |
|-----|-----|-----|-----|-----|
1 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
2 | p | | | |
| | | | | |
|-----|-----|-----|-----|-----|
3 | | x | x | |
| | | | | |
|-----|-----|-----|-----|-----|
4 | | | | |
| | | | | |
|-----|-----|-----|-----|-----|
5 | | | k | |
| | | | | |
|-----|-----|-----|-----|-----|
Pomyslalem zeby zrobic petle. Kazda iteracja petli to jeden ruch. Przewiduje mozliwosc na skos. No i w kazdej sytuacji najprostrza droga bedzie wlasnie na ukos. No i zeby tak przejsc musimy przejsc przez pola 2,3 , 3,3 , 3,4 i 4,4. Na poczatek zastanawiam sie czy w ogole jest to mozliwe do obliczenia przez php. No, ale dajmy na to ze tak. Pierwsza iteracja - sprawdzamy czy mozemy wejsc na pole 2,3. Jezeli tak - idziemy do drugiej iteracji, jezeli nie - sprawdzamy czy sasiednie pola (zaczynajac od tych najblizej punktu docelowego) sa puste. Jezeli mozna wejsc na jakies pole, wchodzimy na nie, konczymy petle i wchodzimy do nowej, gdzie nastepuje ponowne liczenie sciezki, ale juz od nowego pukntu.
Dobrze mysle, i czy da to sie wykonac? Potrafil bym napisac takie cos, ale nie uwzgledniajac chodzenia na skos. Prosze o jakies sugestie, jak to rozwiazac.