Mengutip buku aturan FIDE :
Penangkapan ini hanya legal pada saat bergerak mengikuti kemajuan ini dan disebut penangkapan 'en passant'.
Mengutip Wikipedia :
Pengambilan en passant harus dilakukan pada belokan berikutnya atau hak untuk melakukannya hilang.
Mengapa?
Saya tahu cerita dasar dari en passant dan saya akan memparafrasekannya di sini: Sebuah aturan telah ditambahkan untuk membiarkan pion bergerak dua kotak ke depan pada langkah pertamanya. Seseorang mengatakan sesuatu seperti, bagaimana jika pion menggunakan ini untuk melarikan diri dari pion musuh yang berdekatan? Maka kerangka / kerangka dasar gadai akan diubah! Jadi kita harus memiliki seorang pelintas untuk melestarikan kerangka catur yang sama.
Oke bagian itu masuk akal, tetapi mengapa harus di langkah selanjutnya? Apakah bagian dari aturan itu hanya ditambahkan kemudian? Kenapa ditambahkan? Ketika dua bidak berdekatan secara diagonal berhadapan satu sama lain, mereka tidak harus menangkap segera atau jika tidak terlebih dahulu kehilangan kemampuan untuk menangkap. Jadi konsep "pion hantu", jika Anda tidak segera menangkapnya, dan pemain lain tidak memindahkannya, bagi saya sepertinya harus tetap ada dan tersedia untuk ditangkap selama masih ada.
Adakah yang tahu mengapa bagian en passant ini dibuat?
Latar Belakang Opsional: Jika Anda penasaran, saya berasal dari latar belakang pemrograman. Dari semua gerakan khusus, en passant adalah (adalah, lihat di bawah) yang paling sulit untuk diprogram. Tidak hanya itu satu-satunya gerakan di mana bagian yang menangkap bergerak ke kotak kosong, tetapi itu satu-satunya gerakan yang "menghilang" jika Anda tidak mengambilnya. Itu berarti itu adalah gerakan di mana posisi papan total tidak cukup informasi untuk menghasilkan semua gerakan. (Itu berlaku untuk kastil juga, yang sudah memiliki cukup banyak aturan rumit.) Dua pion musuh bisa berdekatan pada peringkat 4 atau 5, dikelilingi oleh kotak kosong, tetapi Anda masih tidak tahu apakah mungkin lewat en passant . Anda harus memeriksa langkah sebelumnya.
Atau begitulah yang saya pikirkan. Sekarang saya meninjau kembali ini, saya menemukan cara cerdas untuk mengimplementasikan en passant tanpa memeriksa log pemindahan. Jangan menghasilkannya saat start. Hasilkan di move_take, khususnya di akhir langkah gadai 2 langkah. Tapi simpan dalam array pergerakan khusus karena yang normal akan dihapus di setiap inc_turn. Kemudian bermigrasi dan hapus dengan tepat di gen_all_moves. Dengan begitu, jika ep tidak diambil, itu tidak menghasilkan sendiri pada langkah berikutnya karena Anda tidak memindahkan bidak yang sama dua langkah pada langkah berikutnya. Ingatlah untuk memeriksa kedua sisi pion dan membuat dua gerakan ep jika ada dua pion musuh.
Castling diimplementasikan dengan bantuan boolean yang "bergerak" di setiap bagian, yang juga berguna untuk langkah pertama pion. Bahkan jika Raja dan Benteng ada di tempat yang tepat, Anda menggunakannya untuk melihat apakah Raja / Benteng telah pindah sebelumnya. Tidak perlu memeriksa log pindah. Tetapi saya akan mengatakan bahwa Castling sekarang adalah langkah yang paling sulit untuk diterapkan karena Anda harus memeriksa apakah jalurnya sedang diserang. En passant bukan lagi yang paling sulit sekarang karena saya memikirkan cara yang cerdas.