Vielleicht übersehe ich etwas, aber in meinem Kopf ist es gerade schrecklich einfach.
Warum nimmst du nicht ein normales quadratische Koordinatensystem und bildest es über nested Arrays ab. Dort kannst du die Spielfelder drin ablegen und mit ihnen ein Typ und die Koordinaten. Nun könntest du einfach Bereiche über den Typ als außerhalb des Spielfeldes definieren (also weiß, schwarz, void). Alles weitere sind dann Muster wie sich die Spielsteine bewegen dürfen:
links: gleiche y-Koordinate; x-Koordinate - Anzahl Schritte
rechts: gleiche y-Koordinate; x-Koordinate + Anzahl Schritte
schräg hoch: y+Schritte/2; x+Schritte/2
usw.
Warum nimmst du nicht ein normales quadratische Koordinatensystem und bildest es über nested Arrays ab. Dort kannst du die Spielfelder drin ablegen und mit ihnen ein Typ und die Koordinaten. Nun könntest du einfach Bereiche über den Typ als außerhalb des Spielfeldes definieren (also weiß, schwarz, void). Alles weitere sind dann Muster wie sich die Spielsteine bewegen dürfen:
links: gleiche y-Koordinate; x-Koordinate - Anzahl Schritte
rechts: gleiche y-Koordinate; x-Koordinate + Anzahl Schritte
schräg hoch: y+Schritte/2; x+Schritte/2
usw.