Wydajny sposób na reprezentację logiki heksagonalnej dla gier typu abalone

11

Muszę zaimplementować sztuczną inteligencję dla gry Abalone i zastanawiam się, jaki jest najlepszy sposób na przedstawienie logiki tablicy za pomocą Java bez marnowania zbyt dużej ilości zasobów we wszystkich procedurach sprawdzania i aktualizacji.

Czy lepiej korzystać z różnych list? Matryca obiektów Cell? Jakieś sugestie?

wprowadź opis zdjęcia tutaj

Asgard
źródło
1
Na stronie redblobgames.com znajduje się świetny zasób dotyczący siatek heksagonalnych. Zawiera wszystko, co musisz wiedzieć o siatkach heksagonalnych, ich układach współrzędnych i sposobach wykonywania na nich obliczeń.
Roman Reiner

Odpowiedzi:

7

1) ponieważ plansza ma stały rozmiar, który i tak zamierzasz karmić AI, możesz po prostu przedstawić ją jako jednowymiarową tablicę z odpowiednią liczbą komórek, gdzie każda komórka reprezentuje przestrzeń na tablica. Mapowanie tej jednowymiarowej tablicy na ekranie może być trochę dziwne, ale jest to problem, który musisz rozwiązać tylko raz.

To samo dotyczy sprawdzania poprawności ruchów; możesz albo utworzyć macierz przylegania, która mówi, które komórki sąsiadują z innymi, albo wymyślić logikę, aby określić przyleganie. Tak czy inaczej, byłby to jednorazowy koszt.

2) Zauważ, że każda siatka sześciokątna jest również siatką dwuosiową, z tym wyjątkiem, że osie mają odstęp 60 lub 120 stopni względem siebie, zamiast 90 stopni, podobnie jak siatki, w których X i Y są prostopadłe. (Stare gry planszowe z sześciokątnymi kafelkami używały tej sztuczki do oznaczania heksów 1, 2, 3 w jednym kierunku, a AA, BB, CC w drugim, przekrzywionym, w kierunku.)

Przyjrzałem się kodowi źródłowemu komputerowych implementacji gier planszowych, które używają (2), i dostarczyły one procedury takie jak „znajdź linię między heksami” lub „znajdź odległość między heksami”. To było dawno temu, więc szczegóły są zgubione w czasie, ale pamiętam, że nie było to zbyt trudne.

(To była bardziej matematyka całkowita niż rzeczy pitagorejskie.;))

Obrabować
źródło
1
Jeśli chodzi o sztuczną inteligencję do zrobienia wiele lat temu, miałem tablicę 19 x 19 komórek i 192 x 5 tablic wskaźników do komórek, które następnie użyła AI, aby ustalić swój ruch.