Mapa heksagonalna - poznawanie mapy.

0

Witam, siedzę od kilku dni w internecie i nie mogę znaleźć nic co by mi pomogło w poznawaniu mapy heksagonalnej.

Po mapie mogę poruszać się w 6 kierunkach: E, W, NW, NE, SW, SE (kierunki świata), mapa ma różne pola (jakie to pola to jest mnie istotne). Na samym początku posiadam informację o 6 polach które mnie otaczają (przepaść czy inne pole), tylko to pole na którym jestem aktualnie nie wiem gdzie znajduje się dokładnie na mapie.

Aby poznać kolejne pola muszę zmienić pozycję na któreś z otaczających mnie pól i po przejściu na kolejne pole otrzymuje informację o 6 polach które otaczają moją aktualną pozycję.

Poszukuje jakiegoś algorytmu aby jak najsprawniej rozpoznać całą mapę.

Poniżej dołączam przykład siatki z aktualną pozycją.
siatka-szesciokatna-zielona-20x20-mm-1-00-m.jpg

Z góry dziękuje za odpowiedzi.

0

Najprościej? Puszczasz BFS (przeszukiwanie wszerz) i zapisujesz sobie mapę w postaci grafu nieskierowanego.

0

Dzięki wielkie za szybką odpowiedź, spróbuję zaimplementować przesłane metody.

Ale jeśli jest jakiś algorytm który by to zrobił szybciej a trudniejszy w implementacji to też chętnie poznam.

0

Szybciej nie będzie. Są algorytmy szybsze, ale jeśli szukasz w tym labiryncie czegoś konkretnego. Jak chcesz tylko mapować labirynt to tak będzie najlepiej.
Takie algorytmy jak Dijkstra czy A* znajdują ci najkrótsze ścieżki w grafie, ale jeśli wiesz skąd i dokąd chcesz iść.

0

Sam zacząłem bawić się tym algorytmem. Jak rozwiązałeś zapis odwiedzanych pól? Jeśli mapa byłaby kwadratowa to można by było zapisać ją w ten sposób:

 
...
 static int[,] map = {
                                {0, 4, 0, 0, 0}, 
                                {0, 0, 0, 0, 2},
                                {0, 0, 0, 0, 0},
                                {0, 1, 0, 0, 0},
                                {0, 0, 5, 0, 3}
                            };
...

Niestety, mapa jest heksagonalna. Mielibyście rozwiązanie zapisu odwiedzanych pól kiedy ma się 6 kierunków ruchu zamiast 4 (ewentualnie 8 jeśli w kwadracie sięgałoby się po skosach)?

1

Może wkleję inny obrazek aby było jasne, zauważ że to zwykłą tablica 6x6: 49a4158cc5.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1