2017-10-22 5 views
-1

Ich erstelle eine Schachvariante. Die Regeln und Teile sind die gleichen wie beim klassischen Schach. Der einzige Unterschied ist die Größe des Boards (12x12 statt 8x8).Schachzug Validierung in größeren als 8x8 Board?

Mein Ziel ist es, nur Moves zu validieren und anzuwenden. Welche Möglichkeiten habe ich abgesehen davon, alles von Grund auf neu zu schreiben?

Die meisten gängigen Formate scheinen nur auf 8x8 Boards beschränkt zu sein.

Mir geht es gut mit jeder populären Programmiersprache.

+1

Normale 8x8 Schach kann Dinge wie die Tatsache nutzen, dass es 8 Bits in einem Byte, und die 64-Bit-Prozessoren 64 verarbeiten Bits auf einmal. Ein glückliches Spiel! Sie werden wahrscheinlich etwas anderes tun müssen, nicht nur ein vorhandenes Schachprogramm zu patchern. –

Antwort

1

Es gibt drei allgemeine Ansätze, die Schach-Engines bei der Move-Generierung berücksichtigen. In Schachprogrammierung Jargon werden diese allgemein bekannt als:

1) Bitboards

2) Mailbox (Schachjargon für Arrays mit padding)

3) Stücklisten

Die gebräuchlichste Methode verwendet heute ist Bitboards, das leider nicht so einfach zu größeren Boards modifizierbar ist. Das sollte dir aber nicht zu schlecht sein. Der Grund, warum Bitboards der De-Facto-Standard sind, ist nicht, weil sie am einfachsten zu implementieren sind (sie sind tatsächlich die komplexesten), sondern weil sie viel schneller für die Bewegungserzeugung (und durch die Erweiterungsprüfung) sind. Dies ist jedoch nur relevant für die Verwendung in einer Suchfunktion, die Bewegungen millionenfach pro Sekunde validieren muss. Wenn Sie nur eine gute alte einfache Bewegungsvalidierung wünschen, sollte die Methode zwei mehr als ausreichend sein und sich leicht an größere Boards anpassen lassen. Wenn Sie Schach-Engines sehen möchten, die diese Methode verwenden, suchen Sie nach Engines, die eine Mailbox- oder oX88-Board-Repräsentation verwenden. Ich denke, dass die didaktische CPW-Engine Mailbox verwendet.

https://chessprogramming.wikispaces.com/CPW-Engine

und hier ist ein Artikel über Zug-Generation: https://chessprogramming.wikispaces.com/Move+Generation

Verwandte Themen