So hatte ich einige Probleme, meinen Kopf um ein Problem zu wickeln. Ich schreibe gerade eine Bitboard-basierte Schach-Engine in Java (es war eine Fahrt, die alles herausgefunden hat). Bis jetzt funktionieren alle Schachfiguren/König/Ritter wie erwartet und ohne Fehler.Sliding Piece Generation in Schach-Engine
Was ich brauche, um Verständnis zu verstehen, ist das Verschieben von Stücken. Ich habe das Array von leeren Brettbewegungen für jedes Quadrat/Stück erzeugt. Aus meinem derzeitigen Verständnis heraus muss ich auch ein Array entwickeln, das jede mögliche Belegung auf jedem Quadrat enthält - und dann dieses Array auf der Grundlage verschiedener Methoden irgendwie nachschlagen.
Ist diese Art zu denken richtig? Es geht darum, jede Zahl von 0 bis 2^63 auszuwählen und mit der Move-Bitboard für dieses Quadrat zu kopieren und dann mit einer Methode (magic/rotierte Bitboards) zu speichern, um das Array zu initialisieren und auf dieselbe Weise auf es zuzugreifen Laufzeit?
Pseudocode und Erklärungen werden sehr geschätzt. (Ich benutze das >>> übrigens).
Danke, aber selbst mit magischen Bitboards verwenden Sie die magische Zahl, um eine Nachschlagetabelle genau zu referenzieren. Meine Frage ist mehr, wie man diese Nachschlagetabelle erzeugt. Es sei denn, ich verstehe es einfach nicht. – thePanthurr
@thePanthurr Ihre Frage lässt es so erscheinen, als ob Sie glauben, dass für jede Gleitstückmethode die gleiche Nachschlagetabelle verwendet wird. Aber sie alle benötigen unterschiedliche Nachschlagetabellen. Einige von ihnen (z. B. magische Bitboards) verwenden mehrere Nachschlagetabellen. Sie sollten entscheiden, welche Methode Sie verwenden möchten, darüber lesen und dann gezielt danach fragen, was Sie nicht verstehen. – interjay
@thePanthurr Sie müssen die Tabelle nicht selbst generieren. – SmallChess