Certification

by

             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



    
This message has been edited by iorr5t from IP address 68.98.164.60 on Mar 2, 2006 6:39 PM
This message has been edited by MCalkins from IP address 12.183.134.80 on Feb 18, 2006 1:04 AM
This message has been edited by MCalkins from IP address 12.183.134.80 on Feb 18, 2006 1:03 AM

Posted on Feb 18, 2006, 12:52 AM
from IP address 12.183.134.80

Respond to this message   

Return to Index