Ефективний спосіб представити логіку шестикутної дошки для ігор, що нагадують абалони


11

Мені потрібно реалізувати гру AI для Abalone, і мені цікаво, який найкращий спосіб представити логіку дошки за допомогою Java, не витрачаючи занадто багато ресурсів на всі перевірки та оновлення.

Краще використовувати різні списки? Матриця об'єктів Cell? Будь-яка пропозиція?

введіть тут опис зображення


1
На redblobgames.com є чудовий ресурс для шестикутних сіток. У ньому є все, що потрібно знати про шестикутні сітки, їх системи координат та як робити обчислення на них.
Роман Райнер

Відповіді:


7

1) оскільки плата має фіксований розмір, який ви все одно збираєтеся подавати в AI, ви можете просто представити це як одновимірний масив з потрібним числом комірок, де кожна комірка представляє пробіл на дошки. Зображення цього одновимірного масиву на екрані для презентації може бути трохи дивним, але це проблема, яку вам доведеться вирішити лише один раз.

Те саме стосується і валідації ходів; ви можете або створити матрицю суміжності, яка вказує, які клітини примикають до інших, або придумати логіку для визначення суміжності. Так чи інакше, це була б разова вартість.

2) Зауважте, що кожна шестигранна сітка також є двоосьовою сіткою, за винятком того, що осі розташовані на відстані 60 або 120 на відстані одна від одної, а не на 90 градусів, як сітки, де X і Y перпендикулярні. (Старі шестигранні настільні ігри використовували цей трюк для позначення шестигранників 1, 2, 3 в одному напрямку, а AA, BB, CC в іншому, перекошений, напрямок.)

Я переглянув вихідний код комп’ютерних реалізацій настільних ігор, які використовують (2), і вони запропонували підпрограми на кшталт "знайти лінію між шестигранниками" або "знайти відстань між шестигранниками". Це було давно, тому деталі втрачені часом, але я пам’ятаю, це було не надто важко.

(Це було більше цілої математики, а не піфагорійської речі;;))


1
Для AI for go make років тому я мав масив комірок 19x19 і масив покажчиків 192x5 на клітини, які потім AI використовував, щоб з'ясувати свій хід.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.