引用 FIDE規則手冊:
此捕獲行為僅在此進展之後是合法的,被稱為“過客”
引用 Wikipedia:
必須捕獲 pass
為什麼?
我知道嗎? en passant 的基本故事,在這裡我將其解釋為:添加了一條規則,使典當在其第一步中向前移動兩個正方形。有人說,如果一個棋子使用它從相鄰的一個敵人那裡逃脫怎麼辦?然後將更改基本的pawn骨架/框架!因此,我們必須有一個 en passant 來保留相同的國際象棋框架。
好吧,這部分很有意義,但是為什麼下一步必須要呢? 規則的該部分是否僅在以後添加?為什麼要添加呢?當兩個棋子在對角線相鄰時彼此面對時,它們不必立即捕獲,也不必喪失捕獲能力。因此,“幽靈兵”的概念,如果您不立即捕獲它,而另一個玩家也沒有移動它,在我看來,它應該仍然存在並且只要存在就可以捕獲。 p>
有人知道為什麼創建傳人的這一部分嗎?
可選背景:如果您很好奇,我來自編程背景。在所有特殊動作中,傳人是最難編程的。這不僅是捕捉片移動到空白方塊的唯一舉動,而且如果不採取行動,它也是“消失”的唯一舉動。也就是說,這是總木板位置沒有足夠信息來生成所有動作的動作。 (對於castling來說也是如此,它已經有了相當多的棘手規則。)在第4或第5級,兩個敵方棋子可能相鄰,周圍都是空白方塊,但是您仍然不知道 en passant 是可能的。您必須檢查以前的舉動。
或者我想。現在,我正在重新研究這一點,我找到了一種無需檢查移動日誌即可實現 en passant 的巧妙方法。不要在開始時生成它。在move_take(特別是在兩步棋子移動結束時)生成它。但是將其存儲在一個特殊的移動數組中,因為普通的數組會在每次inc_turn時被清除。然後遷移並在gen_all_moves處適當清除。這樣,如果不採用ep,則它不會在下一步移動時自行生成,因為在下一步移動時,您沒有將相同的pawn移兩步。只要記住檢查棋子的兩側並在兩個敵方棋子存在的情況下創建兩個 ep移動即可。
在每個棋子中都使用“移動的”布爾值來實現城堡,這當然對於典當的第一步也很有用。即使King和Rook在正確的位置,您也可以使用它來查看King / Rook是否已經移動過。無需檢查移動日誌。但是我要說的是Castling現在是最難實現的步驟,因為您必須檢查路徑是否受到攻擊。我想到巧妙的方法後,“過客”不再是最困難的事情。