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.
quelle
Antworten:
Das OP bat mich, Quellen zur Verfügung zu stellen, die die Behauptung stützen, dass der Doppelschritt ursprünglich ein Doppelschritt war . Ich werde mein Bestes geben.
Der unmittelbare Vorgänger des modernen Schachs, das Spiel Shatranj , hatte Bauern ( sarbaz ), aber keinen doppelten Schritt. Die Stücke in Shartanj hatten relativ schwache Kräfte und das Gameplay, insbesondere in der Eröffnung, war im Allgemeinen langsam.
Im Mittelalter haben sie dieses Problem gelöst, indem sie das Spiel von bestimmten Tabiyas aus gestartet haben , Kampffeldern , in denen die gegnerischen Kräfte bereits Kontakt hatten.
Eine neuere westliche Erfindung, um das Spiel zu beschleunigen, bestand darin, doppelte Anfangszüge von Bauern zuzulassen. Aus einer kurzen Schachgeschichte von Henry A. Davidson, Kapitel 7:
Davidson bespricht dann sehr kurz die Regeln für aufeinanderfolgende Züge in früheren Schachversionen.
Irgendwann gab es auch die Möglichkeit, zwei verschiedene Bauern gleichzeitig um jeweils einen Schritt zu bewegen. Zitat aus demselben Buch:
Ich denke, dieser historische Kontext liefert einige Gründe dafür, warum die En-Passant-Regel eingeführt wurde. Wenn der Doppelschritt tatsächlich ein Doppelzug ist, ist es ziemlich logisch, dass dem Gegner (beim nächsten Zug) die Chance gegeben wird, den Bauern nach dem ersten Schritt zu erobern. (Siehe auch die Antwort von Brian Towers.)
quelle
Ein Bauer, der sich en passant "aussetzt", unterscheidet sich von einem, der dies nicht tut. Sagen wir für einen schwarzen Bauern auf a4 und einen weißen Bauern auf b4: Wenn Sie Schwarz die Möglichkeit geben, ... axb3 jederzeit nach b2-b4 zu spielen, bedeutet dies, dass die Züge b2-b4 und b3-b4, die scheinbar zu demselben führen Position, haben langfristige Auswirkungen, da es zu sehr von der Vergangenheit abhängt. Insbesondere wenn der Bauer auf b2 steht, müsste Weiß die Vor- und Nachteile abwägen, wenn sein Bauer in ein oder zwei Zügen auf b4 verschoben wird (wobei der Betrüger Schwarz ein dauerhaftes Recht einräumt, b3 zu übernehmen).
Oder im Geiste der Motivation von en passant, die Sie richtig beschrieben haben, würde das dauerhafte Stoppen der Flucht eines Bauern mit zwei Feldern den Vorteil, zwei Felder vorwärts bewegen zu können, stark vernachlässigen (oder erschweren).
Ein weiterer praktischer Grund, weil es für Menschen viel einfacher ist: Mit mehr als einem Bauern auf dem Brett wäre es kompliziert, die Rechte der Passanten auf allen zu verfolgen. (Jemand hat einmal vorgeschlagen, dass Stücke bei einem FIDE-Treffen en passant gefangen genommen werden können; natürlich wurde es aus dem Raum gelacht - das heißt, ich kann mich nicht an die Quelle dieser Geschichte erinnern.)
Man kann eine ähnliche (entgegengesetzte?) Frage zu Burgenrechten stellen; Die "einfachere" Option könnte wohl darin bestehen, die Rochade immer zuzulassen, solange sich die Teile wieder auf ihren ursprünglichen Plätzen befinden, aber auch dies hat starke Auswirkungen, von denen eine eine geringere Bedeutung der Entwicklung hat.
Im Allgemeinen sind mit den Spezialzügen im Schach Einschränkungen verbunden, um sicherzustellen, dass sie das Aussehen des Spiels nach dem Zeitpunkt, zu dem diese Spezialbewegungen ausgeführt werden, nicht ändern (spielen ... axb3, um einen weißen Bauern auf b4 zu nehmen, sieht komplett aus im Gegensatz zum alten Spiel ist es also nur für einen Zug erlaubt). Immerhin wurden die Regeln von Menschen wohl willkürlich entworfen.
quelle
Der Grund ist sehr einfach. Wenn Weiß einen Bauern auf d5 hat, der verhindert, dass sich ein schwarzer Bauer auf e7 bewegt, umgeht der Zug e7-e5 dies. Um die Dinge fair zu halten, als der erste Zug des Doppelbauern eingeführt wurde, wurde auch die En-Passant-Regel eingeführt, damit Weiß nicht die Möglichkeit verliert, zu fangen. Wenn Schwarz jedoch e7-e6 spielt und Weiß nicht sofort erfasst, kann Schwarz beim nächsten Zug e6-e5 spielen, und Weiß hat seine Chance für immer verloren. Dies spiegelt sich in der Beschränkung von en passant auf den Zug unmittelbar nach dem Doppelbauernzug wider.
quelle
Interessante Frage, obwohl ich nicht sicher bin, ob es eine gute Antwort gibt, die durch Quellen gestützt werden könnte. Ich kann mir folgende Motivationen vorstellen:
quelle
Ihre Programmierbeschreibung basiert auf dem für Ihr Programm spezifischen Variablennamen, daher ist es schwer zu verstehen, was Sie sagen. Eine Möglichkeit, dies zu programmieren, besteht darin, einen Booleschen Wert für "Double Pawn Move" zu verwenden. Nehmen wir zur Vereinfachung an, dass Weiß derjenige ist, der einen doppelten Bauernzug ausführt. Um einen Bauern zwei Raum, weiß zuerst bewegt die Spielfigur zu bewegen einLeerzeichen und setze den Booleschen Wert "Double Move" dieses Bauern auf "true". Wenn einer der Bauern des Gegners einen echten "Double Pawn Move" -Booleschen Wert hat, hat er nur zwei Möglichkeiten: Take oder Pass. Jetzt hat Schwarz nur noch zwei legale Züge (drei, wenn zwei Bauern nebeneinander liegen). Schwarz kann entweder den Bauern erobern oder passen. Wenn Schwarz vorbei ist, ist jetzt Weiß an der Reihe. Wenn ein Spieler seinen Zug jedoch mit einem Booleschen Wert "Doppel-Bauernzug" beginnt, der für einen seiner eigenen Bauern gilt, darf er keinen anderen Zug ausführen, als diesen Bauern voranzubringen, und dann wird der Boolesche Wert auf "Falsch" gesetzt. Wenn Schwarz den Bauern fängt, wird der Boolesche Wert auf falsch gesetzt, und jetzt ist Weiß an der Reihe.
Mit anderen Worten, Sie können sich vorstellen , dass en passant nicht so ist, dass Weiß einen Zug macht, der aus dem Bauern besteht, der zwei Felder bewegt, und dann hat Schwarz die Option en passant nur beim nächsten Zug, sondern dass Weiß einen Zug macht, der aus dem Bauern besteht Wenn Schwarz ein Feld bewegt, macht es einen Zug, der entweder darin besteht, diesen Bauern zu erobern oder zu passen. Wenn sich der Bauer noch auf dem Brett befindet, bewegt Weiß den Bauern erneut. Die Option en passant gibt es nur für den Zwischenzug (den, in dem Schwarz entweder fängt oder passt), da dies der einzige Zug ist, bei dem sich der Bauer an der richtigen Stelle befindet, um gefangen zu werden.
Hier wird jedoch ein Eckfall vorgestellt: https://www.futilitycloset.com/2010/06/09/intercepted/ . Da en passant derzeit implementiert ist, ist es legal, einen doppelten Zug zu machen, wenn Ihr König nach dem zweiten Aufstieg nicht in Schach ist, selbst wenn Ihr König in Schach ist, nachdem der Bauer nur ein Feld vorgerückt ist. Ihr Code müsste dies also berücksichtigen.
quelle