Zitieren des FIDE-Regelwerks :
Diese Erfassung ist nur für unterwegs nach diesem Vormarsch zulässig und wird als "en passant" -Erfassung bezeichnet.
Wikipedia zitieren :
Die en passant Gefangennahme muss in der nächsten Runde erfolgen , sonst geht das Recht dazu verloren.
Warum?
Ich kenne die grundlegende Geschichte von en passant und werde sie hier nur umschreiben: Es wurde eine Regel hinzugefügt, nach der Bauern beim ersten Zug zwei Felder vorwärts bewegen können. Jemand sagte so etwas wie: Was ist, wenn ein Bauer dies benutzt, um einem feindlichen Nachbarn zu entkommen? Dann würde das grundlegende Bauernskelett / -rahmen geändert! Wir müssen also einen Passanten haben , um den gleichen Schachrahmen zu bewahren.
Okay, dieser Teil macht Sinn, aber warum muss er beim nächsten Schritt sein? Wurde dieser Teil der Regel erst später hinzugefügt? Warum wurde es überhaupt hinzugefügt? Wenn zwei Bauern diagonal nebeneinander stehen und sich gegenüberstehen, müssen sie nicht sofort fangen oder verlieren die Fähigkeit zu fangen. Das Konzept des "Geisterbauern", wenn Sie ihn nicht sofort erfassen und der andere Spieler ihn nicht bewegt, scheint mir also, dass er immer noch vorhanden und für die Erfassung verfügbar sein sollte, solange er vorhanden ist.
Weiß jemand, warum dieser Teil von en passant geschaffen wurde?
Optionaler Hintergrund: Falls Sie neugierig sind, habe ich einen Programmierhintergrund. Von allen speziellen Bewegungen, en passant ist (war, siehe unten) am schwersten zu Programm. Dies ist nicht nur der einzige Zug, bei dem sich das Erfassungsstück auf ein leeres Quadrat bewegt, sondern es ist auch der einzige Zug, der "verschwindet", wenn Sie ihn nicht ausführen. Das heißt, es ist ein Zug, bei dem die gesamte Brettposition nicht ausreicht , um alle Züge zu generieren. (Dies gilt auch für die Rochade, die bereits eine Reihe kniffliger Regeln enthält.) Zwei feindliche Bauern könnten auf dem 4. oder 5. Rang nebeneinander stehen, umgeben von leeren Feldern, aber Sie wissen immer noch nicht, ob ein Passant möglich ist. Sie müssen den vorherigen Zug überprüfen.
Zumindest dachte ich das. Jetzt, wo ich das noch einmal besuche, habe ich eine clevere Möglichkeit gefunden, en passant zu implementieren, ohne das Verschiebungsprotokoll zu überprüfen. Generieren Sie es nicht beim Start. Generiere es bei move_take, speziell am Ende eines zweistufigen Bauernzuges. Speichern Sie es jedoch in einem speziellen Verschiebungsarray, da das normale bei jedem inc_turn gelöscht wird. Migrieren und löschen Sie dann entsprechend unter gen_all_moves. Auf diese Weise generiert sich ep nicht, wenn es nicht genommen wird, beim nächsten Zug nicht selbst, da Sie denselben Bauern beim nächsten Zug nicht zwei Schritte bewegt haben. Denken Sie daran, beide Seiten des Bauern zu überprüfen und zwei Ep-Moves zu erstellen, wenn zwei feindliche Bauern vorhanden sind.
Castling wurde mit Hilfe eines "bewegten" Booleschen Wertes in jedem Stück implementiert, was natürlich auch für den ersten Zug eines Bauern nützlich ist. Selbst wenn sich der König und der Turm an der richtigen Stelle befinden, können Sie damit feststellen, ob sich der König / Turm zuvor bewegt hat. Das Verschiebungsprotokoll muss nicht überprüft werden. Aber ich werde sagen, dass Castling jetzt am schwierigsten umzusetzen ist, da Sie überprüfen müssen, ob der Pfad angegriffen wird. En passant ist nicht mehr das Schwierigste, seit ich über den klugen Weg nachgedacht habe.