Citant le livre de règles FIDE :
Cette capture n'est légale qu'en mouvement suite à cette avancée et s'appelle une capture «en passant».
Citant Wikipédia :
La capture en passant doit être faite au tour suivant ou la droite pour le faire est perdue.
Pourquoi?
Je connais l'histoire de base en passant et je vais juste la paraphraser ici: Une règle a été ajoutée pour permettre aux pions d'avancer de deux cases lors de son premier mouvement. Quelqu'un a dit quelque chose comme, et si un pion l'utilisait pour s'échapper d'un pion ennemi adjacent? Ensuite, le squelette / cadre de base du pion serait changé! Il faut donc avoir un passant pour conserver le même cadre d'échecs.
D'accord, cette partie est logique, mais pourquoi doit-elle être sur le tout prochain coup? Cette partie de la règle n'a-t-elle été ajoutée que plus tard? Pourquoi a-t-il été ajouté? Lorsque deux pions sont en diagonale adjacents et s'affrontent, ils n'ont pas à capturer immédiatement ou à défaut de pouvoir capturer. Ainsi, le concept de "pion fantôme", si vous ne le capturez pas immédiatement et que l'autre joueur ne le déplace pas, me semble qu'il devrait toujours être là et disponible pour la capture tant qu'il est là.
Est-ce que quelqu'un sait pourquoi cette partie d' en passant a été créée?
Contexte optionnel: Au cas où vous seriez curieux, je viens d'un parcours de programmation. De tous les coups spéciaux, en passant est (était, voir ci-dessous) le plus difficile à programmer. Non seulement c'est le seul mouvement où la pièce de capture se déplace vers un carré vide, mais c'est le seul mouvement qui "disparaît" si vous ne le prenez pas. Cela signifie que c'est un mouvement où la position totale du plateau n'est pas suffisante pour générer tous les mouvements. (Cela vaut aussi pour le roque, qui a déjà sa juste part de règles délicates.) Deux pions ennemis pourraient être adjacents au 4ème ou 5ème rang, entourés de carrés vides, mais vous ne savez toujours pas si le passant est possible. Vous devez vérifier le mouvement précédent.
Ou du moins je le pensais. Maintenant que je revisite cela, j'ai trouvé un moyen intelligent d'implémenter en passant sans vérifier le journal des déplacements. Ne le générez pas au début du tour. Générez-le à move_take, en particulier à la fin d'un mouvement de pion en 2 étapes. Mais stockez-le dans un tableau de mouvements spécial car le tableau normal est effacé à chaque inc_turn. Puis migrez et effacez de manière appropriée à gen_all_moves. De cette façon, si ep n'est pas pris, il ne se génère pas au prochain coup car vous n'avez pas déplacé ce même pion de deux pas au coup suivant. N'oubliez pas de vérifier les deux côtés du pion et de créer deux mouvements ep si deux pions ennemis sont là.
Le roque a été implémenté à l'aide d'un booléen "déplacé" dans chaque pièce, ce qui est également utile pour le premier mouvement d'un pion bien sûr. Même si le Roi et la Tour sont au bon endroit, vous l'utilisez pour voir si le Roi / Tour a déjà bougé. Pas besoin de vérifier le journal des déplacements. Mais je dirai que Castling est maintenant le mouvement le plus difficile à mettre en œuvre car vous devez vérifier si le chemin est attaqué. En passant n'est plus le plus difficile maintenant que j'ai pensé à la manière intelligente.