Effiziente Darstellung der hexagonalen Board-Logik für Abalone-ähnliche Spiele

11

Ich muss das AI for Abalone- Spiel implementieren und frage mich, wie die Board-Logik mit Java am besten dargestellt werden kann, ohne zu viele Ressourcen für alle beteiligten Überprüfungs- und Aktualisierungsroutinen zu verschwenden.

Ist es besser, verschiedene Listen zu verwenden? Eine Matrix von Zellobjekten? Irgendein Vorschlag?

Geben Sie hier die Bildbeschreibung ein

Asgard
quelle
1
Auf redblobgames.com gibt es eine großartige Ressource für hexagonale Gitter. Sie enthält alles, was Sie über hexagonale Gitter, ihre Koordinatensysteme und deren Berechnung wissen müssen.
Roman Reiner

Antworten:

7

1) Da das Board eine feste Größe hat, die Sie ohnehin nur in eine KI einspeisen möchten, können Sie es einfach als eindimensionales Array mit der richtigen Anzahl von Zellen darstellen, wobei jede Zelle ein Leerzeichen auf der darstellt Tafel. Das Zuordnen dieses eindimensionalen Arrays zum Bildschirm zur Präsentation mag etwas seltsam sein, aber es ist ein Problem, das Sie nur einmal lösen müssen.

Gleiches gilt für die Validierung von Zügen. Sie können entweder eine Adjazenzmatrix erstellen, die angibt, welche Zellen an andere angrenzen, oder eine Logik zur Bestimmung der Adjazenz entwickeln. In jedem Fall wären es einmalige Kosten.

2) Beachten Sie, dass jedes Hex-Gitter auch ein zweiachsiges Gitter ist, außer dass die Achsen 60 oder 120 Grad voneinander entfernt sind, anstatt 90 Grad wie Gitter, bei denen X und Y senkrecht stehen. (Alte Hex-Tile-Brettspiele verwendeten diesen Trick, um die Hexes 1, 2, 3 in einer Richtung und AA, BB, CC in der anderen Richtung zu kennzeichnen.)

Ich habe mir den Quellcode für Computerimplementierungen von Brettspielen angesehen, die (2) verwenden, und sie haben Routinen wie "Finde eine Linie zwischen Hexen" oder "Finde den Abstand zwischen Hexen" bereitgestellt. Das ist lange her, daher gehen die Details der Zeit verloren, aber ich erinnere mich, dass es nicht allzu schwer war.

(Es war eher eine ganzzahlige Mathematik als das pythagoreische Zeug .;))

rauben
quelle
1
Für eine KI vor Jahren hatte ich ein 19x19-Array von Zellen und ein 192x5-Array von Zeigern auf Zellen, die die KI dann verwendete, um ihre Bewegung herauszufinden.