Certificationby Test Cases that have been Successfully Run Notation: kqbnrp example d3=wn to put white knight, d3=. to clear square i=king that has moved o-rook that has moved a-pawn that can be taken en passent t1 a1-a2 2 (tests legalmove for move a1-a2) 0=not possible 1=illegal 2=allowed t2 w -1 (tests existsavalidmove for color white) -1 = there exists a legal move 0 = there is no legal move t3 b --- (tests isincheck for color black) --- = not in check n-- = in check by a knight -l- = in check on the long diagonal -s- = in check on the short diagonal --r = in check on the rank --f = in check on the file -lf = (example multiple checks) begin tests # castling (Black) a8=br e8=bk h8=br t1 e8-c8 2 t1 e8-g8 2 can't move king out of or over check (diagonals) but it's ok to move castle out of attack or over attack ---------------------------------------- h1=wq h1 is attacked by black queen on h8 t1 e8-c8 2 no problem castling queen side t1 e8-g8 2 and obviously also king side h1=.. h1 no longer has a black queen ---------------------------------------- ok, these are similar h2=wq b1 t1 e8-c8 2 t1 e8-g8 2 h2=.. h3=wq c1 t1 e8-c8 0 t1 e8-g8 2 h3=.. h4=wq d1 t1 e8-c8 0 t1 e8-g8 2 h4=.. h5=wq e1 t1 e8-c8 0 can't castle t1 e8-g8 0 out of check h5=.. h6=wq f1 t1 e8-c8 2 t1 e8-g8 0 h6=.. h7=wp g1 (good time to test pawn diagonal attack) t1 e8-c8 2 t1 e8-g8 0 h7=.. ok, now for the same thing the other way a1=wq h1 t1 e8-c8 2 t1 e8-g8 2 a1=.. a2=wq g1 t1 e8-c8 2 t1 e8-g8 0 a2=.. a3=wq f1 t1 e8-c8 2 t1 e8-g8 0 a3=.. a4=wq e1 t1 e8-c8 0 can't castle t1 e8-g8 0 out of check a4=.. a5=wq d1 t1 e8-c8 0 t1 e8-g8 2 a5=.. a6=wq c1 t1 e8-c8 0 t1 e8-g8 2 a6=.. a7=wp b1 t1 e8-c8 2 t1 e8-g8 2 a7=.. now try it all with a bishop instead of queen h1=wb a1 t1 e8-c8 2 t1 e8-g8 2 h1=.. h2=wb b1 t1 e8-c8 2 t1 e8-g8 2 h2=.. h3=wb c1 t1 e8-c8 0 t1 e8-g8 2 h3=.. h4=wb d1 t1 e8-c8 0 t1 e8-g8 2 h4=.. h5=wb e1 t1 e8-c8 0 can't castle t1 e8-g8 0 out of check h5=.. h6=wb f1 t1 e8-c8 2 t1 e8-g8 0 h6=.. h7=wb g1 t1 e8-c8 2 t1 e8-g8 0 h7=.. a1=wb h1 t1 e8-c8 2 t1 e8-g8 2 a1=.. a2=wb g1 t1 e8-c8 2 t1 e8-g8 0 a2=.. a3=wb f1 t1 e8-c8 2 t1 e8-g8 0 a3=.. a4=wb e1 t1 e8-c8 0 t1 e8-g8 0 a4=.. a5=wb d1 t1 e8-c8 0 t1 e8-g8 2 a5=.. a6=wb c1 t1 e8-c8 0 t1 e8-g8 2 a6=.. a7=wb b1 t1 e8-c8 2 t1 e8-g8 2 a7=.. time to try rank attacks a1=wr t1 e8-c8 2 t1 e8-g8 2 a1=.. b1=wr t1 e8-c8 2 t1 e8-g8 2 b1=.. c1=wr t1 e8-c8 0 t1 e8-g8 2 c1=.. d1=wr t1 e8-c8 0 t1 e8-g8 2 d1=.. e1=wr t1 e8-c8 0 t1 e8-g8 0 e1=.. f1=wr t1 e8-c8 2 t1 e8-g8 0 f1=.. g1=wr t1 e8-c8 2 t1 e8-g8 0 g1=.. h1=wr t1 e8-c8 2 t1 e8-g8 2 g1=.. also test attacked by a White rook that has moved a1=wo t1 e8-c8 2 t1 e8-g8 2 a1=.. b1=wo t1 e8-c8 2 t1 e8-g8 2 b1=.. c1=wo t1 e8-c8 0 t1 e8-g8 2 c1=.. d1=wo t1 e8-c8 0 t1 e8-g8 2 d1=.. e1=wo t1 e8-c8 0 t1 e8-g8 0 e1=.. f1=wo t1 e8-c8 2 t1 e8-g8 0 f1=.. g1=wo t1 e8-c8 2 t1 e8-g8 0 g1=.. h1=wo t1 e8-c8 2 t1 e8-g8 2 g1=.. and a queen a1=wq t1 e8-c8 2 t1 e8-g8 2 a1=.. b1=wq t1 e8-c8 2 t1 e8-g8 2 b1=.. c1=wq t1 e8-c8 0 t1 e8-g8 2 c1=.. d1=wq t1 e8-c8 0 t1 e8-g8 2 d1=.. e1=wq t1 e8-c8 0 t1 e8-g8 0 e1=.. f1=wq t1 e8-c8 2 t1 e8-g8 0 f1=.. g1=wq t1 e8-c8 2 t1 e8-g8 0 g1=.. h1=wq t1 e8-c8 2 t1 e8-g8 2 h1=.. test knight on row 3 a6=wn t1 e8-c8 2 t1 e8-g8 2 a6=.. b6=wn t1 e8-c8 0 t1 e8-g8 2 b6=.. c6=wn t1 e8-c8 0 t1 e8-g8 2 c6=.. d6=wn t1 e8-c8 0 t1 e8-g8 0 d6=.. e6=wn t1 e8-c8 0 t1 e8-g8 0 e6=.. f6=wn t1 e8-c8 0 t1 e8-g8 0 f6=.. g6=wn t1 e8-c8 2 t1 e8-g8 0 g6=.. h6=wn t1 e8-c8 2 t1 e8-g8 0 h6=.. knight on row 2 a7=wn t1 e8-c8 0 t1 e8-g8 2 a7=.. b7=wn t1 e8-c8 0 t1 e8-g8 2 b7=.. c7=wn t1 e8-c8 0 t1 e8-g8 0 c7=.. d7=wn t1 e8-c8 2 t1 e8-g8 0 d7=.. e7=wn t1 e8-c8 0 t1 e8-g8 0 e7=.. f7=wn t1 e8-c8 0 t1 e8-g8 2 f7=.. g7=wn t1 e8-c8 0 t1 e8-g8 0 g7=.. h7=wn t1 e8-c8 2 t1 e8-g8 0 h7=.. finally, pawns a7=wp t1 e8-c8 2 t1 e8-g8 2 a7=.. b7=wp t1 e8-c8 0 t1 e8-g8 2 b7=.. c7=wp t1 e8-c8 0 t1 e8-g8 2 c7=.. d7=wp t1 e8-c8 0 t1 e8-g8 0 d7=.. e7=wp t1 e8-c8 0 t1 e8-g8 0 e7=.. f7=wp t1 e8-c8 0 t1 e8-g8 0 f7=.. g7=wp t1 e8-c8 2 t1 e8-g8 0 g7=.. h7=wp t1 e8-c8 2 t1 e8-g8 0 h7=.. opponent piece in the way (not possible calls) b8=wn t1 e8-c8 0 t1 e8-g8 2 b8=.. c8=wn t1 e8-c8 0 t1 e8-g8 2 c8=.. d8=wn t1 e8-c8 0 t1 e8-g8 2 d8=.. f8=wn t1 e8-c8 2 t1 e8-g8 0 f8=.. g8=wn t1 e8-c8 2 t1 e8-g8 0 g8=.. own piece in the way (illegal calls) b8=bn t1 e8-c8 1 t1 e8-g8 2 b8=.. c8=bn t1 e8-c8 1 t1 e8-g8 2 c8=.. d8=bn t1 e8-c8 1 t1 e8-g8 2 d8=.. f8=bn t1 e8-c8 2 t1 e8-g8 1 f8=.. g8=bn t1 e8-c8 2 t1 e8-g8 1 g8=.. rook or king has moved a8=bo t1 e8-c8 1 t1 e8-g8 2 a8=br e8=bi t1 e8-c8 1 t1 e8-g8 1 e8=bk h8=bo t1 e8-c8 2 t1 e8-g8 1 h8=br # Castling (White) a1=wr e1=wk h1=wr t1 e1-c1 2 t1 e1-g1 2 Can't move King out of or over check (Diagonals) But it's OK to move castle out of attack or over attack ---------------------------------------- h8=bq a1 is attacked by black queen on h8 t1 e1-c1 2 No problem castling queen side t1 e1-g1 2 And obviously also king side h8=.. h8 no longer has a black queen ---------------------------------------- OK, these are similar h7=bq b1 t1 e1-c1 2 t1 e1-g1 2 h7=.. h6=bq c1 t1 e1-c1 0 t1 e1-g1 2 h6=.. h5=bq d1 t1 e1-c1 0 t1 e1-g1 2 h5=.. h4=bq e1 t1 e1-c1 0 Can't castle t1 e1-g1 0 out of check h4=.. h3=bq f1 t1 e1-c1 2 t1 e1-g1 0 h3=.. h2=bp g1 (Good time to test pawn diagonal attack) t1 e1-c1 2 t1 e1-g1 0 h2=.. OK, now for the same thing the other way a8=bq h1 t1 e1-c1 2 t1 e1-g1 2 a8=.. a7=bq g1 t1 e1-c1 2 t1 e1-g1 0 a7=.. a6=bq f1 t1 e1-c1 2 t1 e1-g1 0 a6=.. a5=bq e1 t1 e1-c1 0 Can't castle t1 e1-g1 0 out of check a5=.. a4=bq d1 t1 e1-c1 0 t1 e1-g1 2 a4=.. a3=bq c1 t1 e1-c1 0 t1 e1-g1 2 a3=.. a2=bp b1 t1 e1-c1 2 t1 e1-g1 2 a2=.. Now try it all with a Bishop instead of Queen h8=bb a1 t1 e1-c1 2 t1 e1-g1 2 h8=.. h7=bb b1 t1 e1-c1 2 t1 e1-g1 2 h7=.. h6=bb c1 t1 e1-c1 0 t1 e1-g1 2 h6=.. h5=bb d1 t1 e1-c1 0 t1 e1-g1 2 h5=.. h4=bb e1 t1 e1-c1 0 Can't castle t1 e1-g1 0 out of check h4=.. h3=bb f1 t1 e1-c1 2 t1 e1-g1 0 h3=.. h2=bb g1 t1 e1-c1 2 t1 e1-g1 0 h2=.. a8=bb h1 t1 e1-c1 2 t1 e1-g1 2 a8=.. a7=bb g1 t1 e1-c1 2 t1 e1-g1 0 a7=.. a6=bb f1 t1 e1-c1 2 t1 e1-g1 0 a6=.. a5=bb e1 t1 e1-c1 0 t1 e1-g1 0 a5=.. a4=bb d1 t1 e1-c1 0 t1 e1-g1 2 a4=.. a3=bb c1 t1 e1-c1 0 t1 e1-g1 2 a3=.. a2=bb b1 t1 e1-c1 2 t1 e1-g1 2 a2=.. Time to try Rank attacks a8=br t1 e1-c1 2 t1 e1-g1 2 a8=.. b8=br t1 e1-c1 2 t1 e1-g1 2 b8=.. c8=br t1 e1-c1 0 t1 e1-g1 2 c8=.. d8=br t1 e1-c1 0 t1 e1-g1 2 d8=.. e8=br t1 e1-c1 0 t1 e1-g1 0 e8=.. f8=br t1 e1-c1 2 t1 e1-g1 0 f8=.. g8=br t1 e1-c1 2 t1 e1-g1 0 g8=.. h8=br t1 e1-c1 2 t1 e1-g1 2 g8=.. Also attacked by a Black rook that has moved a8=bo t1 e1-c1 2 t1 e1-g1 2 a8=.. b8=bo t1 e1-c1 2 t1 e1-g1 2 b8=.. c8=bo t1 e1-c1 0 t1 e1-g1 2 c8=.. d8=bo t1 e1-c1 0 t1 e1-g1 2 d8=.. e8=bo t1 e1-c1 0 t1 e1-g1 0 e8=.. f8=bo t1 e1-c1 2 t1 e1-g1 0 f8=.. g8=bo t1 e1-c1 2 t1 e1-g1 0 g8=.. h8=bo t1 e1-c1 2 t1 e1-g1 2 g8=.. And a queen a8=bq t1 e1-c1 2 t1 e1-g1 2 a8=.. b8=bq t1 e1-c1 2 t1 e1-g1 2 b8=.. c8=bq t1 e1-c1 0 t1 e1-g1 2 c8=.. d8=bq t1 e1-c1 0 t1 e1-g1 2 d8=.. e8=bq t1 e1-c1 0 t1 e1-g1 0 e8=.. f8=bq t1 e1-c1 2 t1 e1-g1 0 f8=.. g8=bq t1 e1-c1 2 t1 e1-g1 0 g8=.. h8=bq t1 e1-c1 2 t1 e1-g1 2 h8=.. Test Knight on row 3 a3=bn t1 e1-c1 2 t1 e1-g1 2 a3=.. b3=bn t1 e1-c1 0 t1 e1-g1 2 b3=.. c3=bn t1 e1-c1 0 t1 e1-g1 2 c3=.. d3=bn t1 e1-c1 0 t1 e1-g1 0 d3=.. e3=bn t1 e1-c1 0 t1 e1-g1 0 e3=.. f3=bn t1 e1-c1 0 t1 e1-g1 0 f3=.. g3=bn t1 e1-c1 2 t1 e1-g1 0 g3=.. h3=bn t1 e1-c1 2 t1 e1-g1 0 h3=.. Knight on row 2 a2=bn t1 e1-c1 0 t1 e1-g1 2 a2=.. b2=bn t1 e1-c1 0 t1 e1-g1 2 b2=.. c2=bn t1 e1-c1 0 t1 e1-g1 0 c2=.. d2=bn t1 e1-c1 2 t1 e1-g1 0 d2=.. e2=bn t1 e1-c1 0 t1 e1-g1 0 e2=.. f2=bn t1 e1-c1 0 t1 e1-g1 2 f2=.. g2=bn t1 e1-c1 0 t1 e1-g1 0 g2=.. h2=bn t1 e1-c1 2 t1 e1-g1 0 h2=.. Finally, pawns a2=bp t1 e1-c1 2 t1 e1-g1 2 a2=.. b2=bp t1 e1-c1 0 t1 e1-g1 2 b2=.. c2=bp t1 e1-c1 0 t1 e1-g1 2 c2=.. d2=bp t1 e1-c1 0 t1 e1-g1 0 d2=.. e2=bp t1 e1-c1 0 t1 e1-g1 0 e2=.. f2=bp t1 e1-c1 0 t1 e1-g1 0 f2=.. g2=bp t1 e1-c1 2 t1 e1-g1 0 g2=.. h2=bp t1 e1-c1 2 t1 e1-g1 0 h2=.. Opponent piece in the way (not possible calls) b1=bn t1 e1-c1 0 t1 e1-g1 2 b1=.. c1=bn t1 e1-c1 0 t1 e1-g1 2 c1=.. d1=bn t1 e1-c1 0 t1 e1-g1 2 d1=.. f1=bn t1 e1-c1 2 t1 e1-g1 0 f1=.. g1=bn t1 e1-c1 2 t1 e1-g1 0 g1=.. Own piece in the way (Illegal calls) b1=wn t1 e1-c1 1 t1 e1-g1 2 b1=.. c1=wn t1 e1-c1 1 t1 e1-g1 2 c1=.. d1=wn t1 e1-c1 1 t1 e1-g1 2 d1=.. f1=wn t1 e1-c1 2 t1 e1-g1 1 f1=.. g1=wn t1 e1-c1 2 t1 e1-g1 1 g1=.. Rook or King has moved a1=wo t1 e1-c1 1 t1 e1-g1 2 a1=wr e1=wi t1 e1-c1 1 t1 e1-g1 1 e1=wk h1=wo t1 e1-c1 2 t1 e1-g1 1 h1=wr # Exposing check is not possible Also testing all knight moves e1=wk e2=wp (not exposed yet) e5=wn e6=bq t1 e5-g6 2 t1 e5-g4 2 t1 e5-f3 2 t1 e5-d3 2 t1 e5-c4 2 t1 e5-c6 2 t1 e5-d7 2 t1 e5-f7 2 e2=.. (now it's illegal) t1 e5-g6 0 t1 e5-g4 0 t1 e5-f3 0 t1 e5-d3 0 t1 e5-c4 0 t1 e5-c6 0 t1 e5-d7 0 t1 e5-f7 0 Rook should be the same e6=bq t1 e5-g6 0 But not Bishop e6=bb t1 e5-g6 2 # OK, now try short diagonal e1=wk f2=wp g3=wp h4=bq t1 f2-f3 2 g3=.. t1 f2-f3 0 # long diagonal e1=wk d2=wn c3=wb a5=bq t1 d2-f3 2 c3=.. t1 d2-f3 0 Same tests with a bishop e1=wk f2=wp g3=wp h4=bb t1 f2-f3 2 g3=.. t1 f2-f3 0 # long diagonal e1=wk d2=wn c3=wb a5=bb t1 d2-f3 2 c3=.. t1 d2-f3 0 Will do the same from Blacks perspective ======================================== # exposing check is not possible also testing all knight moves e8=bk e7=bp (not exposed yet) e4=bn e3=wq t1 e4-g3 2 t1 e4-g5 2 t1 e4-f6 2 t1 e4-d6 2 t1 e4-c5 2 t1 e4-c3 2 t1 e4-d2 2 t1 e4-f2 2 e7=.. (now it's illegal) t1 e4-g3 0 t1 e4-g5 0 t1 e4-f6 0 t1 e4-d6 0 t1 e4-c5 0 t1 e4-c3 0 t1 e4-d2 0 t1 e4-f2 0 rook should be the same e3=wq t1 e4-g3 0 but not bishop e3=wb t1 e4-g3 2 # ok, now try short diagonal e8=bk f7=bp g6=bp h5=wq t1 f7-f6 2 g6=.. t1 f7-f6 0 # long diagonal e8=bk d7=bn c6=bb a4=wq t1 d7-f6 2 c6=.. t1 d7-f6 0 same tests with a bishop e8=bk f7=bp g6=bp h5=wb t1 f7-f6 2 g6=.. t1 f7-f6 0 # long diagonal e8=bk d7=bn c6=bb a4=wb t1 d7-f6 2 c6=.. t1 d7-f6 0 # En Passent captures a5=wp b5=bp t1 a5-b6 0 Can only take en passent b5=ba t1 a5-b6 2 Like this OK, swap columns for next test b5=wp a5=bp t1 b5-a6 0 a5=ba t1 b5-a6 2 Etc. all other possible cases b5=wp c5=bp t1 b5-c6 0 c5=ba t1 b5-c6 2 c5=wp b5=bp t1 c5-b6 0 b5=ba t1 c5-b6 2 c5=wp d5=bp t1 c5-d6 0 d5=ba t1 c5-d6 2 d5=wp c5=bp t1 d5-c6 0 c5=ba t1 d5-c6 2 d5=wp e5=bp t1 d5-e6 0 e5=ba t1 d5-e6 2 e5=wp d5=bp t1 e5-d6 0 d5=ba t1 e5-d6 2 e5=wp f5=bp t1 e5-f6 0 f5=ba t1 e5-f6 2 f5=wp e5=bp t1 f5-e6 0 e5=ba t1 f5-e6 2 f5=wp g5=bp t1 f5-g6 0 g5=ba t1 f5-g6 2 g5=wp f5=bp t1 g5-f6 0 f5=ba t1 g5-f6 2 g5=wp h5=bp t1 g5-h6 0 h5=ba t1 g5-h6 2 h5=wp g5=bp t1 h5-g6 0 g5=ba t1 h5-g6 2 # And as seen by Black a4=bp b4=wp t1 a4-b3 0 b4=wa t1 a4-b3 2 b4=bp a4=wp t1 b4-a3 0 a4=wa t1 b4-a3 2 b4=bp c4=wp t1 b4-c3 0 c4=wa t1 b4-c3 2 c4=bp b4=wp t1 c4-b3 0 b4=wa t1 c4-b3 2 c4=bp d4=wp t1 c4-d3 0 d4=wa t1 c4-d3 2 d4=bp c4=wp t1 d4-c3 0 c4=wa t1 d4-c3 2 d4=bp e4=wp t1 d4-e3 0 e4=wa t1 d4-e3 2 e4=bp d4=wp t1 e4-d3 0 d4=wa t1 e4-d3 2 e4=bp f4=wp t1 e4-f3 0 f4=wa t1 e4-f3 2 f4=bp e4=wp t1 f4-e3 0 e4=wa t1 f4-e3 2 f4=bp g4=wp t1 f4-g3 0 g4=wa t1 f4-g3 2 g4=bp f4=wp t1 g4-f3 0 f4=wa t1 g4-f3 2 g4=bp h4=wp t1 g4-h3 0 h4=wa t1 g4-h3 2 h4=bp g4=wp t1 h4-g3 0 g4=wa t1 h4-g3 2 # Check pawn moves (nothing to capture) a2=wp t1 a2-a3 2 t1 a2-a4 2 t1 a2-b3 0 a2=.. b2=wp t1 b2-b3 2 t1 b2-b4 2 t1 b2-a3 0 t1 b2-c3 0 b2=.. c2=wp t1 c2-c3 2 t1 c2-c4 2 t1 c2-b3 0 t1 c2-d3 0 c2=.. d2=wp t1 d2-d3 2 t1 d2-d4 2 t1 d2-c3 0 t1 d2-e3 0 d2=.. e2=wp t1 e2-e3 2 t1 e2-e4 2 t1 e2-d3 0 t1 e2-f3 0 e2=.. f2=wp t1 f2-f3 2 t1 f2-f4 2 t1 f2-e3 0 t1 f2-g3 0 f2=.. g2=wp t1 g2-g3 2 t1 g2-g4 2 t1 g2-f3 0 t1 g2-h3 0 g2=.. h2=wp t1 h2-h3 2 t1 h2-h4 2 t1 h2-g3 0 h2=.. a3=wp t1 a3-a4 2 t1 a3-b4 0 a3=.. b3=wp t1 b3-b4 2 t1 b3-a4 0 t1 b3-c4 0 b3=.. c3=wp t1 c3-c4 2 t1 c3-b4 0 t1 c3-d4 0 c3=.. d3=wp t1 d3-d4 2 t1 d3-c4 0 t1 d3-e4 0 d3=.. e3=wp t1 e3-e4 2 t1 e3-d4 0 t1 e3-f4 0 e3=.. f3=wp t1 f3-f4 2 t1 f3-e4 0 t1 f3-g4 0 f3=.. g3=wp t1 g3-g4 2 t1 g3-f4 0 t1 g3-h4 0 g3=.. h3=wp t1 h3-h4 2 t1 h3-g4 0 h3=.. a4=wp t1 a4-a5 2 t1 a4-b5 0 a4=.. b4=wp t1 b4-b5 2 t1 b4-a5 0 t1 b4-c5 0 b4=.. c4=wp t1 c4-c5 2 t1 c4-b5 0 t1 c4-d5 0 c4=.. d4=wp t1 d4-d5 2 t1 d4-c5 0 t1 d4-e5 0 d4=.. e4=wp t1 e4-e5 2 t1 e4-d5 0 t1 e4-f5 0 e4=.. f4=wp t1 f4-f5 2 t1 f4-e5 0 t1 f4-g5 0 f4=.. g4=wp t1 g4-g5 2 t1 g4-f5 0 t1 g4-h5 0 g4=.. h4=wp t1 h4-h5 2 t1 h4-g5 0 h4=.. a5=wp t1 a5-a6 2 t1 a5-b6 0 a5=.. b5=wp t1 b5-b6 2 t1 b5-a6 0 t1 b5-c6 0 b5=.. c5=wp t1 c5-c6 2 t1 c5-b6 0 t1 c5-d6 0 c5=.. d5=wp t1 d5-d6 2 t1 d5-c6 0 t1 d5-e6 0 d5=.. e5=wp t1 e5-e6 2 t1 e5-d6 0 t1 e5-f6 0 e5=.. f5=wp t1 f5-f6 2 t1 f5-e6 0 t1 f5-g6 0 f5=.. g5=wp t1 g5-g6 2 t1 g5-f6 0 t1 g5-h6 0 g5=.. h5=wp t1 h5-h6 2 t1 h5-g6 0 h5=.. a6=wp t1 a6-a7 2 t1 a6-b7 0 a6=.. b6=wp t1 b6-b7 2 t1 b6-a7 0 t1 b6-c7 0 b6=.. c6=wp t1 c6-c7 2 t1 c6-b7 0 t1 c6-d7 0 c6=.. d6=wp t1 d6-d7 2 t1 d6-c7 0 t1 d6-e7 0 d6=.. e6=wp t1 e6-e7 2 t1 e6-d7 0 t1 e6-f7 0 e6=.. f6=wp t1 f6-f7 2 t1 f6-e7 0 t1 f6-g7 0 f6=.. g6=wp t1 g6-g7 2 t1 g6-f7 0 t1 g6-h7 0 g6=.. h6=wp t1 h6-h7 2 t1 h6-g7 0 h6=.. a7=wp t1 a7-a8 2 t1 a7-b8 0 a7=.. b7=wp t1 b7-b8 2 t1 b7-a8 0 t1 b7-c8 0 b7=.. c7=wp t1 c7-c8 2 t1 c7-b8 0 t1 c7-d8 0 c7=.. d7=wp t1 d7-d8 2 t1 d7-c8 0 t1 d7-e8 0 d7=.. e7=wp t1 e7-e8 2 t1 e7-d8 0 t1 e7-f8 0 e7=.. f7=wp t1 f7-f8 2 t1 f7-e8 0 t1 f7-g8 0 f7=.. g7=wp t1 g7-g8 2 t1 g7-f8 0 t1 g7-h8 0 g7=.. h7=wp t1 h7-h8 2 t1 h7-g8 0 h7=.. No need to check en-passent pawn moves or captures. They can't exist. Before a player's move is passed to LegalMove, all en-passent pawns are changed to regular pawns (or else there is a bug in the calling program) Here is what LegalMove does if given that not possible case: a3=wa t1 b3-a4 1 t1 b3-b4 1 t1 b3-c4 1 # check pawn moves (nothing to capture) a7=bp t1 a7-a6 2 t1 a7-a5 2 t1 a7-b6 0 a7=.. b7=bp t1 b7-b6 2 t1 b7-b5 2 t1 b7-a6 0 t1 b7-c6 0 b7=.. c7=bp t1 c7-c6 2 t1 c7-c5 2 t1 c7-b6 0 t1 c7-d6 0 c7=.. d7=bp t1 d7-d6 2 t1 d7-d5 2 t1 d7-c6 0 t1 d7-e6 0 d7=.. e7=bp t1 e7-e6 2 t1 e7-e5 2 t1 e7-d6 0 t1 e7-f6 0 e7=.. f7=bp t1 f7-f6 2 t1 f7-f5 2 t1 f7-e6 0 t1 f7-g6 0 f7=.. g7=bp t1 g7-g6 2 t1 g7-g5 2 t1 g7-f6 0 t1 g7-h6 0 g7=.. h7=bp t1 h7-h6 2 t1 h7-h5 2 t1 h7-g6 0 h7=.. a6=bp t1 a6-a5 2 t1 a6-b5 0 a6=.. b6=bp t1 b6-b5 2 t1 b6-a5 0 t1 b6-c5 0 b6=.. c6=bp t1 c6-c5 2 t1 c6-b5 0 t1 c6-d5 0 c6=.. d6=bp t1 d6-d5 2 t1 d6-c5 0 t1 d6-e5 0 d6=.. e6=bp t1 e6-e5 2 t1 e6-d5 0 t1 e6-f5 0 e6=.. f6=bp t1 f6-f5 2 t1 f6-e5 0 t1 f6-g5 0 f6=.. g6=bp t1 g6-g5 2 t1 g6-f5 0 t1 g6-h5 0 g6=.. h6=bp t1 h6-h5 2 t1 h6-g5 0 h6=.. a5=bp t1 a5-a4 2 t1 a5-b4 0 a5=.. b5=bp t1 b5-b4 2 t1 b5-a4 0 t1 b5-c4 0 b5=.. c5=bp t1 c5-c4 2 t1 c5-b4 0 t1 c5-d4 0 c5=.. d5=bp t1 d5-d4 2 t1 d5-c4 0 t1 d5-e4 0 d5=.. e5=bp t1 e5-e4 2 t1 e5-d4 0 t1 e5-f4 0 e5=.. f5=bp t1 f5-f4 2 t1 f5-e4 0 t1 f5-g4 0 f5=.. g5=bp t1 g5-g4 2 t1 g5-f4 0 t1 g5-h4 0 g5=.. h5=bp t1 h5-h4 2 t1 h5-g4 0 h5=.. a4=bp t1 a4-a3 2 t1 a4-b3 0 a4=.. b4=bp t1 b4-b3 2 t1 b4-a3 0 t1 b4-c3 0 b4=.. c4=bp t1 c4-c3 2 t1 c4-b3 0 t1 c4-d3 0 c4=.. d4=bp t1 d4-d3 2 t1 d4-c3 0 t1 d4-e3 0 d4=.. e4=bp t1 e4-e3 2 t1 e4-d3 0 t1 e4-f3 0 e4=.. f4=bp t1 f4-f3 2 t1 f4-e3 0 t1 f4-g3 0 f4=.. g4=bp t1 g4-g3 2 t1 g4-f3 0 t1 g4-h3 0 g4=.. h4=bp t1 h4-h3 2 t1 h4-g3 0 h4=.. a3=bp t1 a3-a2 2 t1 a3-b2 0 a3=.. b3=bp t1 b3-b2 2 t1 b3-a2 0 t1 b3-c2 0 b3=.. c3=bp t1 c3-c2 2 t1 c3-b2 0 t1 c3-d2 0 c3=.. d3=bp t1 d3-d2 2 t1 d3-c2 0 t1 d3-e2 0 d3=.. e3=bp t1 e3-e2 2 t1 e3-d2 0 t1 e3-f2 0 e3=.. f3=bp t1 f3-f2 2 t1 f3-e2 0 t1 f3-g2 0 f3=.. g3=bp t1 g3-g2 2 t1 g3-f2 0 t1 g3-h2 0 g3=.. h3=bp t1 h3-h2 2 t1 h3-g2 0 h3=.. a2=bp t1 a2-a1 2 t1 a2-b1 0 a2=.. b2=bp t1 b2-b1 2 t1 b2-a1 0 t1 b2-c1 0 b2=.. c2=bp t1 c2-c1 2 t1 c2-b1 0 t1 c2-d1 0 c2=.. d2=bp t1 d2-d1 2 t1 d2-c1 0 t1 d2-e1 0 d2=.. e2=bp t1 e2-e1 2 t1 e2-d1 0 t1 e2-f1 0 e2=.. f2=bp t1 f2-f1 2 t1 f2-e1 0 t1 f2-g1 0 f2=.. g2=bp t1 g2-g1 2 t1 g2-f1 0 t1 g2-h1 0 g2=.. h2=bp t1 h2-h1 2 t1 h2-g1 0 h2=.. no need to check en-passent pawn moves or captures. they can't exist. before a player's move is passed to legalmove, all en-passent pawns are changed to regular pawns (or else there is a bug in the calling program) here is what legalmove does if given that not possible case: a6=ba t1 b6-a5 1 t1 b6-b5 1 t1 b6-c5 1 # Check legal move h8=bi King that has moved h7=bp h6=wp f7=wp a3=wa Pawn that can be taken en passent b3=bp b2=wn t2 b -1 (Has legal move) t1 b3-a2 2 (Take pawn en passent) a3=wp t2 b 0 (But now nothing is legal any more) # Check IsInCheck e5=bk t3 b --- Not in check d3=wn t3 b N-- d3=.. a1=wb t3 b -L- h5=wr in the same Rank (row) as the King (5) t3 b -LR a1=.. t3 b --R h5=.. b8=wb t3 b -S- e1=wr t3 b -SF in the same File (colunn) as the King (e) b8=.. t3 b --F # check legal move h1=wi king that has moved h2=wp h3=bp f2=bp a6=ba pawn that can be taken en passent b6=wp b7=bn t2 w -1 (has legal move) t1 b6-a7 2 (take pawn en passent) a6=bp t2 w 0 (but now nothing is legal any more) # check isincheck e4=wk t3 w --- not in check d6=bn t3 w N-- d6=.. a8=bb t3 w -L- h4=br in the same rank (row) as the king (5) t3 w -LR a8=.. t3 w --R h4=.. b1=bb t3 w -S- e8=br t3 w -SF in the same file (colunn) as the king (e) b1=.. t3 w --F
from IP address 12.183.134.80 |