iigorr / pgn.net

Portable Game Notation (PGN) implementation in .NET
Other
33 stars 24 forks source link

FEN tag is lost in game.ToString() #19

Open oulenspiegel opened 7 years ago

oulenspiegel commented 7 years ago

PGN example:

[Event "Arena Tournament"] [Site "MARKOVPC"] [Date "2016.11.21"] [Round "1"] [White "R2459"] [Black "R2454"] [Result "1/2-1/2"] [BlackElo "2700"] [Time "05:20:14"] [WhiteElo "2700"] [TimeControl "15+0"] [SetUp "1"] [FEN "1k1r1bnr/pppq1ppp/2n1p3/8/Q1pP2b1/2N2NP1/PP2PPBP/R1B2RK1 w - - 0 1"] [Termination "normal"] [PlyCount "137"] [WhiteType "program"] [BlackType "program"] [Comment ";"]

  1. e3 {(e2-e3 Bg4xf3 Bg2xf3 Nc6-b4 Qa4xd7 Rd8xd7 Nc3-e4 Ng8-f6 Ne4xf6 g7xf6 Bc1-d2 Nb4-d3 b2-b3 c4xb3 a2xb3 Bf8-b4 Bd2xb4 Nd3xb4) -0.12/12 0} Bxf3 {(Bg4xf3 Bg2xf3 Nc6-b4 Qa4xd7 Rd8xd7 Nc3-e4 Ng8-f6 Ne4xf6 g7xf6 Bc1-d2 c7-c5 Ra1-c1 b7-b5 Bd2xb4 c5xb4 Bf3-c6) +0.28/13 0} 2. Bxf3 {(Bg2xf3 Nc6-b4 Qa4xd7 Rd8xd7 b2-b3 c4xb3 a2xb3 Ng8-f6 Nc3-e4 Nf6xe4 Bf3xe4 Nb4-d5 Bc1-d2 Bf8-b4 Bd2xb4 Nd5xb4) -0.29/13 0} Nb4 {(Nc6-b4 Qa4xd7 Rd8xd7 Nc3-e4 Ng8-f6 Ne4xf6 g7xf6 Bc1-d2 Nb4-d3 b2-b3 c7-c5 Bd2-c3 c5xd4 Bc3xd4 Bf8-e7 b3xc4 Rh8-c8) +0.28/15 0} 3. Qxd7 {(Qa4xd7 Rd8xd7 Nc3-e4 Ng8-f6 Ne4xf6 g7xf6 Bc1-d2 Nb4-d3 b2-b3 c7-c5 Bd2-c3 c5xd4 Bc3xd4 Bf8-e7 b3xc4 Rh8-c8) -0.28/14 0} Rxd7 {(Rd8xd7 Nc3-e4 Ng8-f6 Ne4xf6 g7xf6 Bc1-d2 Nb4-d3 b2-b3 c7-c5 Bd2-c3 c5xd4 Bc3xd4 e6-e5 Bd4-c3 c4xb3 a2xb3 Bf8-b4 Bc3xb4 Nd3xb4) +0.28/13 0} 4. Ne2 {(Nc3-e2 Ng8-f6 Bc1-d2 Nb4-d3 b2-b3 c4xb3 a2xb3 Bf8-b4 Bd2xb4 Nd3xb4 Rf1-c1 c7-c6 e3-e4 Rh8-d8 Rc1-c4 Nb4-d3) -0.60/13 0} c5 {(c7-c5 Bc1-d2 c5xd4 e3xd4 Nb4-d3 Ra1-b1 Bf8-b4 Bd2xb4 Nd3xb4 b2-b3 c4xb3 a2-a3 Nb4-d5 Rb1xb3) +0.88/12 0} 5. Bd2 {(Bc1-d2 Nb4-d3 b2-b3 c5xd4 Ne2xd4 Bf8-c5 b3xc4 Ng8-f6 Bd2-c3 Nd3-e5 Bf3-e2 Nf6-e4) -0.90/12 0} Nd3 {(Nb4-d3 b2-b3 c4xb3 a2xb3 c5xd4 Ne2xd4 Ng8-f6 Bf3-e2 Bf8-b4 Rf1-d1 Nf6-e4 Bd2xb4 Nd3xb4 Nd4-c6+ Kb8-c7 Rd1xd7+) +0.69/13 0} 6. b3 {(b2-b3 c5xd4 e3xd4 c4xb3 Ra1-b1 Bf8-b4 Rb1xb3 Bb4xd2 Rb3xd3 Bd2-h6) -0.85/13 0} cxb3 {(c4xb3 a2xb3 Ng8-f6 Ne2-c1 Nd3xc1 Rf1xc1 c5xd4 e3xd4 Bf8-e7 Rc1-c4 Rh8-d8 Kg1-g2 Nf6-d5 Bd2-a5 b7-b6 Ba5-d2 g7-g6) +0.84/14 0} 7. axb3 {(a2xb3 Ng8-f6 Ne2-c1 Nd3xc1 Rf1xc1 c5xd4 e3xd4 Bf8-e7 Ra1-a4 Nf6-d5 Bf3-h5 g7-g6) -0.72/13 0} Nf6 {(Ng8-f6 Ne2-c1 Nd3xc1 Rf1xc1 c5xd4 e3xd4 Bf8-e7 Ra1-a4 Rh8-d8 Bd2-f4+ Be7-d6 Bf4-d2 Bd6-c7 Ra4-c4 h7-h6 Kg1-g2 a7-a5 Rc4xc7 Rd7xc7 Bd2-f4) +0.92/14 0} 8. Nc1 {(Ne2-c1 Nd3xc1 Rf1xc1 c5xd4 e3xd4 Bf8-e7 Rc1-c4 a7-a6 h2-h4 Rh8-c8 Bd2-f4+ Be7-d6 Bf4-d2 Rd7-c7 Ra1-c1 Nf6-d5) -0.83/12 0} Nxc1 {(Nd3xc1 Rf1xc1 c5xd4 e3xd4 Bf8-e7 Ra1-a4 Rh8-d8 Bd2-f4+ Be7-d6 Bf4-d2 Rd7-c7 Rc1-a1 b7-b6 b3-b4 Rc7-c2 Ra4xa7 Rc2xd2 Ra7-a8+ Kb8-c7 Ra1-a7+) +0.92/14 0} 9. Rfxc1 {(Rf1xc1 c5xd4 e3xd4 Bf8-e7 Ra1-a4 Nf6-d5 Kg1-g2 Rh8-d8 h2-h4 g7-g6) -0.94/14 1} cxd4 {(c5xd4 e3xd4 Bf8-e7 Ra1-a4 Rh8-d8 Ra4-c4 Nf6-d5 Kg1-g2 b7-b6 Bf3-e4 g7-g6 h2-h4 a7-a5 Rc4-c6 Be7-f6) +0.92/14 0} 10. exd4 {(e3xd4 Bf8-e7 Ra1-a4 Nf6-d5 h2-h3 Rh8-d8 Kg1-f1 g7-g6 Kf1-g2 Nd5-b6 Bd2-f4+ Be7-d6) -0.94/14 0} Be7 {(Bf8-e7 Rc1-c4 Rh8-d8 h2-h3 Nf6-d5 Bf3-e4 g7-g6 Kg1-g2 b7-b5 Rc4-c2 Be7-b4 Bd2-g5 Bb4-c3) +0.92/14 0} 11. Rc2 {(Rc1-c2 a7-a6 Rc2-c4 Rh8-c8 Bd2-f4+ Be7-d6 Bf4-d2 g7-g6 Kg1-g2 Nf6-d5) -0.96/12 0} a6 {(a7-a6 Rc2-c4 Rh8-c8 Bd2-f4+ Be7-d6 Bf4-e3 Rd7-c7 Bf3-e2 Nf6-d5 Be3-d2 f7-f6 Kg1-g2 g7-g6 Bd2-a5) +1.00/13 0} 12. Rac1 {(Ra1-c1 Nf6-d5 Kg1-g2 g7-g6 Rc2-c4 Rh8-d8 h2-h3 Kb8-a7 Rc1-a1 b7-b6 Bf3xd5 e6xd5) -1.03/12 0} Nd5 {(Nf6-d5 Rc2-c4 Rh8-d8 Bf3-e4 g7-g6 Kg1-g2 Kb8-a7 h2-h4 b7-b5 Rc4-c6) +1.02/11 0} 13. Kg2 {(Kg1-g2 g7-g6 h2-h4 Rh8-d8 Bd2-a5 b7-b6 Ba5-d2 a6-a5 Rc2-c6 Be7-f6) -1.09/11 0} h5 {(h7-h5 h2-h4 g7-g6 Bf3-e4 Rh8-d8 Rc2-c4 Kb8-a7 Rc1-a1 b7-b6 b3-b4) +1.17/11 0} 14. h4 {(h2-h4 g7-g6 Rc2-c4 Kb8-a7 Bf3-e4 Be7-f6 Rc1-a1 Nd5-b6) -1.20/11 0} g6 {(g7-g6 Rc2-c4 Rh8-d8 Kg2-f1 Be7-f6 Kf1-e2 Kb8-a7 Bd2-a5 b7-b6 Bf3xd5 b6xa5 Rc4-c7+ Ka7-b8) +1.40/12 0} 15. Rc4 {(Rc2-c4 Kb8-a7 Bf3-e4 Rh8-d8 Bd2-a5 b7-b6 Ba5-d2 Be7-f6 Bd2-e3 b6-b5 Rc4-c6) -1.31/12 0} Rhd8 {(Rh8-d8 Bd2-a5 b7-b6 Ba5-d2 a6-a5 Rc4-c6 Be7-a3 Rc1-a1 Ba3-b2 Ra1-a4 Rd8-c8 Rc6-c4 Rd7-c7 Ra4-a2) +1.31/13 0} 16. Ba5 {(Bd2-a5 b7-b6 Ba5-d2 a6-a5 Rc4-c6 Be7-b4 Bd2xb4 Nd5xb4 Rc6xb6+ Kb8-a7 Rb6-b5 Ka7-a6) -1.31/10 0} b6 {(b7-b6 Ba5-d2 a6-a5 Rc4-c6 Be7-a3 Rc1-c2 Kb8-b7 Rc6-c4 b6-b5 Rc4-c6 Ba3-b4 Bd2xb4 Nd5xb4 Rc6xe6+ Kb7-a7) +1.36/14 0} 17. Bd2 {(Ba5-d2 a6-a5 Rc4-c6 Rd7-b7 Bf3-e4 Kb8-a7 Bd2-e3 Be7-b4 Be3-g5 Rd8-d7 Rc6-c4 b6-b5 Rc4-c8) -1.18/14 0} a5 {(a6-a5 Rc4-c6 Be7-a3 Rc1-c2 Kb8-b7 Bf3-e4 Ba3-e7 Rc2-c1 Kb7-a6 Be4-d3+ Ka6-a7 Bd3-b5 Be7-b4 Bd2xb4 Nd5xb4 Rc6-c7+) +1.23/14 0} 18. Rc6 {(Rc4-c6 Kb8-a7 Bf3xd5 e6xd5 Bd2-f4 Rd7-b7 Bf4-c7 Rd8-e8 Rc1-e1 Ka7-a6 Rc6-c1 f7-f6 Rc1-c2) -1.30/13 0} Ba3 {(Be7-a3 Rc1-c2 Kb8-b7 Rc6-c4 Ba3-e7 Rc2-c1 Kb7-a6 Bf3-e2 Ka6-a7 Rc1-a1 Be7-d6 Bd2-g5 f7-f6 Bg5-d2) +1.23/14 0} 19. Ra1 {(Rc1-a1 Ba3-b2 Ra1-a4 Rd8-c8 Rc6-c4 Rc8xc4 b3xc4 Nd5-c3 Bd2-f4+ Kb8-a7) -1.21/12 0} Kb7 {(Kb8-b7 Rc6-c4 Ba3-e7 Rc4-c2 Kb7-b8) +1.23/12 0} 20. Rc2 {(Rc6-c2 Ba3-e7 Ra1-c1 Kb7-a7 Bf3-e4 Be7-a3 Rc1-a1 Ba3-b4 Be4xd5 Bb4xd2 Bd5xe6 f7xe6 Rc2xd2 Rd7xd4 Rd2xd4 Rd8xd4) -1.42/12 0} Be7 {(Ba3-e7 Ra1-a4 Rd7-c7 Ra4-c4 Rd8-c8 Rc2-c1 Be7-d6) +1.33/12 0} 21. Rac1 {(Ra1-c1 Kb7-a7 Bf3-e4 Be7-a3 Rc1-a1 Ba3-b4 Be4xd5 Bb4xd2 Bd5xe6 f7xe6 Rc2xd2 Rd7xd4 Rd2-e2) -1.26/12 0} Ka7 {(Kb7-a7 Bf3-e4 Be7-b4 Be4xd5 Bb4xd2 Rc2xd2 e6xd5 Rd2-e2 Ka7-b8 Rc1-c6 Kb8-b7 Rc6-c1) +1.30/12 0} 22. Rc6 {(Rc2-c6 Be7-a3 Rc1-c2 Rd7-b7 Bd2-g5 Ba3-e7 Bg5-d2 Be7-f6 Bd2-e3 Rb7-d7 Bf3xd5 Rd7xd5 Rc6-c7+ Ka7-a6 Rc7xf7 Bf6xd4) -1.30/12 0} Bb4 {(Be7-b4 Bd2-g5 Rd8-f8 Bf3-e4 b6-b5 Be4-d3 Rf8-b8 Kg2-f3 Rb8-b7 Bd3-e4 a5-a4 b3xa4 b5xa4) +1.32/12 0} 23. Bg5 {(Bd2-g5 Rd8-b8 Bf3-e4 Rd7-d6 Rc6xd6 Bb4xd6 Bg5-d2 Bd6-e7 Kg2-f3) -1.46/13 0} Rb8 {(Rd8-b8 Bf3-e4 Rd7-d6 Rc6xd6 Bb4xd6 Bg5-d2 Rb8-b7 Rc1-c6 Rb7-d7 Rc6-c8 Bd6-a3 Bd2-g5 Ba3-b4 Be4xd5 e6xd5) +1.65/13 0} 24. Kf1 {(Kg2-f1 Rd7-d6 Rc6xd6 Bb4xd6 Bg5-d2 Rb8-d8 Kf1-e2 Ka7-a6 Bf3-e4 Bd6-e7 Be4-d3+ Ka6-b7 Bd3-e4) -1.53/12 0} Rd6 {(Rd7-d6 Rc6xd6 Bb4xd6 Bg5-d2 Rb8-b7 Kf1-e2 Rb7-c7 Rc1-e1 Bd6-b4 Bf3xd5 Rc7-c2) +1.70/12 0} 25. Rxd6 {(Rc6xd6 Bb4xd6 Bg5-d2 Rb8-d8 Bf3-e4 Rd8-d7 Rc1-c8 Rd7-c7 Rc8-g8 Bd6-e7 Kf1-e2 Be7-f6 Ke2-d3) -1.64/13 0} Bxd6 {(Bb4xd6 Bg5-d2 Rb8-b7 Rc1-c6 Rb7-d7 Kf1-e2 Ka7-a6 Rc6-c8 Ka6-b5 Ke2-d3 Rd7-c7 Rc8xc7 Bd6xc7) +1.70/13 0} 26. Bd2 {(Bg5-d2 Rb8-b7 Rc1-c6 Rb7-d7 Kf1-e2 Ka7-a6 Rc6-c8 Ka6-b5 Ke2-d3 Rd7-c7 Rc8-d8 Bd6-e7 Rd8-a8) -1.72/13 0} Rb7 {(Rb8-b7 Rc1-c6 Rb7-d7 Kf1-e2 Ka7-a6 Rc6-c8 Rd7-c7 Rc8-e8 Ka6-b5 Ke2-d1 Bd6-b4 Bf3-e2+ Kb5-c6 Be2-f3 Kc6-d7) +1.65/13 0} 27. Ra1 {(Rc1-a1 Ka7-b8 Kf1-e2 Rb7-d7 Ke2-d3 Rd7-c7 Bf3-e4 Kb8-c8) -1.59/13 0} Kb8 {(Ka7-b8 b3-b4 a5xb4 Ra1-b1 Rb7-c7 Bf3xd5 e6xd5 Bd2xb4 Bd6xb4 Rb1xb4 Kb8-b7) +1.81/13 0}
  2. Bxd5 {(Bf3xd5 e6xd5 b3-b4 a5xb4 Ra1-b1 Rb7-c7 Bd2xb4 Bd6xb4 Rb1xb4 Kb8-b7 Rb4-b5 Kb7-c6) -1.87/12 0} exd5 {(e6xd5 b3-b4 a5xb4 Ra1-b1 Rb7-e7 Bd2xb4 Bd6xb4 Rb1xb4 Kb8-c7 Rb4-b3 Re7-e4 Rb3-b4 Kc7-c6 f2-f3 Re4-e7 Kf1-f2 b6-b5 g3-g4 Re7-e8) +2.25/15 0} 29. b4 {(b3-b4 a5xb4 Ra1-b1 Rb7-c7 Bd2xb4 Bd6xb4 Rb1xb4 Kb8-b7 Rb4-b5 Kb7-c6 Rb5-b2 Rc7-e7 f2-f3 b6-b5 Kf1-f2 f7-f6) -2.28/13 0} axb4 {(a5xb4 Ra1-b1 Rb7-e7 Bd2xb4 Bd6xb4 Rb1xb4 Kb8-c7 Rb4-b1 Re7-e4 Rb1-b4 Kc7-c6 Rb4-a4 Re4-e6 Ra4-a7 f7-f5 Ra7-a8 b6-b5 Ra8-a6+ Kc6-d7 Ra6-a7+) +2.32/16 0} 30. Rb1 {(Ra1-b1 Rb7-e7 Bd2xb4 Bd6xb4 Rb1xb4 Kb8-b7 f2-f3 Kb7-c6 Kf1-f2 b6-b5 Rb4-b1 Kc6-b6 Rb1-b3 Re7-e6 Rb3-b4 Kb6-a5) -2.40/15 0} Re7 {(Rb7-e7 Bd2xb4 Bd6xb4 Rb1xb4 Kb8-c7 Rb4-b1 Re7-e4 Rb1-b4 Kc7-c6 f2-f3 Re4-e7 Kf1-f2 b6-b5 Rb4-b3 Kc6-b6 Rb3-b2 Re7-e8 Rb2-b4 Kb6-a5 Rb4-b1) +2.40/17 0} 31. Bxb4 {(Bd2xb4 Bd6xb4 Rb1xb4 Kb8-b7 Rb4-b1 Re7-e4 Rb1-b4 Kb7-c6 Rb4-a4 Re4-e7 Ra4-a8 Kc6-b5 Ra8-c8 Kb5-b4 Rc8-b8 b6-b5) -2.38/15 0} Bxb4 {(Bd6xb4 Rb1xb4 Kb8-c7 Rb4-b1 Re7-e4 Rb1-b4 Kc7-c6 f2-f3 Re4-e7 Rb4-b2 b6-b5 Kf1-g2 Kc6-b6 Kg2-f1 Kb6-a5 Rb2-c2 Ka5-a4 Rc2-c5 b5-b4 Rc5xd5) +2.40/17 0} 32. Rxb4 {(Rb1xb4 Kb8-b7 Rb4-b5 Kb7-c6 Rb5-b2 b6-b5 f2-f3 Kc6-b6 Kf1-f2 Re7-e6 Rb2-b1 Kb6-c6 Rb1-b3 Kc6-b6 Rb3-b1 Kb6-c6 Rb1-b3 Kc6-b6 Rb3-b1 Kb6-c6) -2.39/16 0} Kb7 {(Kb8-b7 Rb4-b2 Re7-e4 Rb2-b4 Kb7-a6 f2-f3 Re4-e6 Kf1-f2 b6-b5 Rb4-b2 Ka6-a5 Rb2-a2+ Ka5-b6 Ra2-b2 Kb6-a5 Rb2-a2+ Ka5-b6 Ra2-b2 Kb6-a5 Rb2-a2+) +2.42/17 0} 33. Rb5 {(Rb4-b5 Kb7-c6 Rb5-b2 b6-b5 f2-f3 Re7-a7 Kf1-e2 Ra7-a4 Ke2-d3 b5-b4 Rb2-c2+ Kc6-b6 Rc2-c8 Ra4-a3+ Kd3-e2 Kb6-b7 Rc8-c5) -2.42/16 0} Kc6 {(Kb7-c6 Rb5-b1 b6-b5 f2-f3 Re7-e3 Kf1-f2 Re3-d3 Rb1-b4 Rd3-a3 Rb4-b1 Ra3-a4 Kf2-e3 b5-b4 Ke3-f4 Kc6-b5 Kf4-e5) +2.50/16 0} 34. Rb1 {(Rb5-b1 b6-b5 f2-f3 Kc6-b6 Kf1-f2 Kb6-a5 Rb1-a1+ Ka5-b4 Ra1-c1 Kb4-a4 Rc1-c5 b5-b4 Rc5xd5 b4-b3 Rd5-d8 Ka4-b5 Rd8-b8+ Kb5-c4 d4-d5 Kc4xd5) -2.92/16 0} b5 {(b6-b5 Rb1-b2 Kc6-b6 f2-f3 Kb6-a5 Rb2-a2+ Ka5-b4 Ra2-c2 Re7-e3 Kf1-f2 Re3-c3 Rc2-d2 Kb4-c4 Kf2-e2 b5-b4) +3.18/15 0} 35. f3 {(f2-f3 Kc6-b6 Kf1-f2 Kb6-a5 Rb1-a1+ Ka5-b4 Ra1-c1 Kb4-a4 Rc1-c5 b5-b4 Rc5xd5 b4-b3 Rd5-d8 Re7-b7 Rd8-a8+ Ka4-b4 Ra8-a1 Kb4-c3 d4-d5 Kc3-c4) -3.06/15 0} Re3 {(Re7-e3 Kf1-f2 Re3-c3 Kf2-e2 Rc3-c4 Ke2-e3 b5-b4 Rb1-a1 Rc4-c3+ Ke3-e2 b4-b3 g3-g4 f7-f5 g4-g5 Kc6-b5 Ra1-a8 Kb5-b4 Ra8-b8+ Kb4-c4) +3.50/15 0} 36. Kf2 {(Kf1-f2 Re3-c3 Rb1-b2 Rc3-c4 Kf2-e3 b5-b4 g3-g4 Kc6-b5 g4xh5 g6xh5 Rb2-b3 Kb5-a4 Rb3-b2 Rc4-c3+ Ke3-f4 Ka4-b5 Rb2-e2 Kb5-c4) -3.31/14 0} Rc3 {(Re3-c3 g3-g4 h5xg4 f3xg4 Rc3-h3 h4-h5 g6xh5 g4xh5 Rh3xh5 Kf2-g3 Rh5-h8) +3.74/14 0} 37. g4 {(g3-g4 h5xg4 f3xg4 Rc3-h3 g4-g5 Rh3xh4 Kf2-e3 Rh4-e4+ Ke3-d3 Re4-g4 Rb1-f1 Rg4-g3+ Kd3-c2 b5-b4 Rf1xf7 Kc6-b5 Rf7-b7+ Kb5-c4) -3.65/13 0} hxg4 {(h5xg4 f3xg4 Rc3-h3 h4-h5 g6xh5 g4xh5 Rh3xh5 Kf2-g3 Rh5-h8 Kg3-g4 Rh8-b8 Rb1-b4 Kc6-b6 Kg4-f4 Kb6-a5 Rb4-b1 b5-b4 Rb1-a1+ Ka5-b6) +3.74/14 0} 38. fxg4 {(f3xg4 Rc3-h3 h4-h5 g6xh5 g4xh5 Rh3xh5 Kf2-e3 Rh5-h3+ Ke3-e2 Rh3-h4 Rb1-c1+ Kc6-b6 Ke2-d3 Rh4-h3+ Kd3-c2 Rh3-f3 Rc1-b1 f7-f5) -3.60/13 0} Rh3 {(Rc3-h3 h4-h5 g6xh5 g4xh5 Rh3xh5 Kf2-g3 Rh5-f5 Rb1-c1+ Kc6-b6 Rc1-b1 Rf5-f6 Kg3-g4 Rf6-f2 Kg4-g3 Rf2-d2 Rb1-b4 Rd2-e2) +3.74/14 0} 39. h5 {(h4-h5 g6xh5 g4xh5 Rh3xh5 Kf2-e3 Rh5-h3+ Ke3-e2 Rh3-h4 Rb1-c1+ Kc6-b6 Ke2-d3 Rh4-h3+ Kd3-c2 Rh3-f3 Rc1-b1 f7-f5) -3.60/13 0} gxh5 {(g6xh5 g4xh5 f7-f5 Rb1-b4 Kc6-b6 Rb4-b1 Kb6-a5 Rb1-a1+ Ka5-b4 Ra1-c1 Rh3xh5 Rc1-c5 f5-f4 Kf2-f3) +3.59/14 0} 40. gxh5 {(g4xh5 Rh3xh5 Kf2-e3 Rh5-h7 Rb1-c1+ Kc6-b6 Rc1-f1 b5-b4 Rf1-f5 b4-b3 Ke3-d3 Rh7-h3+ Kd3-d2 Kb6-b5 Rf5xf7 Kb5-c4 Rf7-b7 Kc4xd4) -3.41/14 0} f5 {(f7-f5 Rb1-c1+ Kc6-b6 Rc1-b1 Kb6-a5 Rb1-a1+ Ka5-b4 Ra1-c1 Kb4-a4 Rc1-a1+ Ka4-b3 Ra1-a5 Rh3xh5 Ra5xb5+ Kb3-c4) +3.57/13 0} 41. Rc1+ {(Rb1-c1+ Kc6-b6 Rc1-b1 Kb6-a5 Rb1-a1+ Ka5-b4 Ra1-c1 Rh3xh5 Rc1-c5 f5-f4 Kf2-f3 Rh5-f5 Rc5-c7) -3.46/11 0} Kb6 {(Kc6-b6 Rc1-c5 b5-b4 Rc5xd5 Rh3xh5 Kf2-e2 b4-b3 Ke2-d3 b3-b2 Kd3-c2 Rh5-h2+ Kc2-b1) +3.19/12 0} 42. Rc5 {(Rc1-c5 b5-b4 Rc5xd5 b4-b3 Rd5xf5 b3-b2 Rf5-f8 Rh3xh5 Kf2-e3 Rh5-h3+ Ke3-d2 b2-b1Q Rf8-b8+) -3.05/12 0} b4 {(b5-b4 Rc5xd5 b4-b3 Rd5-d8 Kb6-b5 Rd8-b8+ Kb5-c4 d4-d5 Rh3xh5 d5-d6 Rh5-h3) +3.58/10 0} 43. Ke2 {(Kf2-e2 b4-b3 Ke2-d2 Rh3xh5 Kd2-c3 f5-f4 Kc3xb3 f4-f3 Rc5-c2 Rh5-h4 Rc2-f2) -2.64/11 0} b3 {(b4-b3 Ke2-d2 Rh3xh5 Kd2-c3 Rh5-h3+ Kc3-b2 f5-f4 Rc5xd5 f4-f3 Rd5-f5) +2.97/9 0}
  3. Kd2 {(Ke2-d2 Rh3xh5 Kd2-c3 Rh5-h3+ Kc3-b2 f5-f4 Rc5xd5 Rh3-d3 Rd5-f5 f4-f3 Kb2-c1 Kb6-c6 Kc1-b2 Kc6-d6) -3.01/11 0} Rxh5 {(Rh3xh5 Kd2-c3 Rh5-h3+ Kc3-b2 f5-f4 Rc5xd5 Rh3-d3 Rd5-f5 f4-f3 Kb2-c1 Kb6-c6 Kc1-b2) +3.02/11 0}
  4. Kc3 {(Kd2-c3 Rh5-h3+ Kc3-b2 f5-f4 Rc5xd5 Rh3-d3 Rd5-f5 f4-f3 Rf5-f4 Kb6-b5 d4-d5 Kb5-c5 Rf4-f5 Kc5-c4) -3.38/11 0} Rh3+ {(Rh5-h3+ Kc3-b2 f5-f4 Rc5xd5 Rh3-d3 Rd5-f5 f4-f3 Kb2-c1 Kb6-c6 Kc1-b2 Kc6-d6 d4-d5 Rd3-e3) +3.40/11 0} 46. Kb2 {(Kc3-b2 f5-f4 Rc5xd5 Rh3-d3 Rd5-f5 f4-f3 Rf5-f6+ Kb6-b5 d4-d5 Kb5-c5 d5-d6 Kc5-c6 Kb2-c1 Kc6-d7 Kc1-b1 Rd3-e3 Kb1-b2) -3.01/12 0} f4 {(f5-f4 Rc5xd5 Rh3-d3 Rd5-f5 f4-f3 Kb2-c1 Kb6-c6 Kc1-b1 Kc6-d6 Kb1-b2 Kd6-e6 Rf5-f4 Ke6-d5) +3.40/12 0} 47. Rxd5 {(Rc5xd5 Rh3-e3 Rd5-f5 f4-f3 Rf5-f6+ Kb6-b5 d4-d5 Kb5-c4 d5-d6 Re3-e2+ Kb2-c1 f3-f2 d6-d7) -3.02/13 0} Rd3 {(Rh3-d3 Rd5-f5 f4-f3 Kb2-c1 Kb6-c6 d4-d5+ Kc6-d6 Kc1-b2 Kd6-c5 Kb2-c1 Kc5-c4 Rf5-f4+ Kc4xd5 Rf4-f5+ Kd5-e4) +3.67/13 0} 48. Rf5 {(Rd5-f5 f4-f3 Rf5-f6+ Kb6-b5 d4-d5 Kb5-c5 d5-d6 Kc5-d4 d6-d7 Kd4-e3 Rf6-e6+ Ke3-f4 Re6-f6+ Kf4-g3 Rf6-g6+ Kg3-f2 Rg6-g7 Kf2-e3 Rg7-e7+ Ke3-d2) -3.15/13 0} f3 {(f4-f3 Rf5-f6+ Kb6-b5 d4-d5 Kb5-c4 d5-d6 Rd3-d2+ Kb2-c1 b3-b2+ Kc1-b1 f3-f2 d6-d7) +3.28/12 0} 49. Rf6+ {(Rf5-f6+ Kb6-b5 d4-d5 Kb5-c5 d5-d6 Kc5-d4 Rf6-e6 Kd4-d5 Re6-e8 Kd5-c6 Re8-f8 Kc6-d7 Rf8-f6 Rd3-e3 Kb2-c1) -3.32/13 0} Kc7 {(Kb6-c7 d4-d5 Kc7-d7 d5-d6 Rd3-e3 Kb2-b1 Re3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Kd7-c6 Kb1-b2) +3.26/12 0} 50. d5 {(d4-d5 Kc7-d7 d5-d6 Rd3-e3 Kb2-c1 Re3-c3+ Kc1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3) -2.68/13 0} Kd7 {(Kc7-d7 d5-d6 Rd3-e3 Kb2-b1 Re3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Kd7-c6 Kb1-b2) +3.25/11 0}
  5. d6 {(d5-d6 Rd3-e3 Kb2-c1 Re3-c3+ Kc1-b2 Rc3-d3 Kb2-b1 Kd7-c6 Kb1-c1 Kc6-d7 Kc1-b1 Kd7-c6 Kb1-c1 Kc6-d7 Kc1-b1 Kd7-c6 Kb1-c1 Kc6-d7 Kc1-b1 Kd7-c6) -2.68/14 0} Kc6 {(Kd7-c6 Rf6-f8 Rd3-e3 Rf8-f6 Kc6-d7 Kb2-b1 Kd7-c6 Kb1-b2 Kc6-d7 Kb2-b1 Kd7-c6 Kb1-b2 Kc6-d7 Kb2-b1 Kd7-c6 Kb1-b2 Kc6-d7 Kb2-b1 Kd7-c6 Kb1-b2) +3.04/12 0} 52. Kc1 {(Kb2-c1 Rd3-e3 Kc1-b1 Kc6-d7 Kb1-b2 Re3-d3 Kb2-b1 Kd7-c6 Kb1-c1 Rd3-e3 Kc1-b1 Kc6-d7 Kb1-b2 Re3-d3 Kb2-b1 Kd7-c6 Kb1-c1 Rd3-e3 Kc1-b1 Kc6-d7) -2.68/12 0} Rc3+ {(Rd3-c3+ Kc1-b1 Rc3-e3 Kb1-c1 Kc6-d7 Kc1-b2 Re3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1) +2.88/11 0}
  6. Kb2 {(Kc1-b2 Rc3-e3 Kb2-b1 Kc6-d7 Kb1-b2 Re3-d3 Kb2-b1 Kd7-c6 Kb1-c1 Rd3-e3 Kc1-b1 Kc6-d7 Kb1-b2 Re3-d3 Kb2-b1 Kd7-c6 Kb1-c1 Rd3-e3 Kc1-b1 Kc6-d7) -2.68/13 0} Re3 {(Rc3-e3 Kb2-b1 Kc6-d7 Kb1-b2 Re3-d3 Rf6-f8 Kd7-e6 Kb2-b1 b3-b2 Kb1xb2 Ke6-d7 Kb2-c2 Rd3-e3 Rf8-f6 Kd7-c6 Kc2-d2 Re3-e2+ Kd2-d3) +1.89/12 0} 54. Kb1 {(Kb2-b1 Kc6-d7 Kb1-b2 Re3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3 Kb2-b1 Rd3-c3 Kb1-b2 Rc3-d3) -2.68/13 0} Kd7 {(Kc6-d7 Kb1-b2 Kd7-e8 Rf6-f5 Re3-d3 Rf5-f6 Ke8-d7 Rf6-f8 Rd3-d2+ Kb2xb3 f3-f2 Kb3-c3 Rd2-a2 Rf8-f6) +1.52/12 0} 55. Kb2 {(Kb1-b2 Re3-d3 Kb2-b1 Rd3-c3 Kb1-a1 Kd7-e8 Ka1-b1 Rc3-e3 Kb1-c1 Ke8-d8 Kc1-b1 Kd8-c8 Rf6-f7 Re3-c3) -2.35/13 0} Ke8 {(Kd7-e8 Rf6-f5 Re3-d3 Rf5-f6 Ke8-d7 Rf6-f8 Rd3-d2+ Kb2xb3 f3-f2 Kb3-c3 Rd2-a2 Rf8-f6 Ra2-e2 Kc3-d3 Re2-b2 Kd3-e3 f2-f1Q Rf6xf1) +0.86/13 0} 56. Rf4 {(Rf6-f4 Re3-d3 Rf4-f5 Rd3-d2+ Kb2xb3 f3-f2 d6-d7+ Ke8xd7) 0.00/11 0} Rd3 {(Re3-d3 Rf4-f5 Rd3-d2+ Kb2xb3 f3-f2 Kb3-c3 Rd2-a2 Kc3-d3 Ke8-d7 Rf5-f8 Kd7xd6) 0.00/11 0} 57. Rf5 {(Rf4-f5 Rd3-d2+ Kb2xb3 f3-f2 d6-d7+ Ke8xd7) 0.00/12 0} Rd2+ {(Rd3-d2+ Kb2xb3 f3-f2 Kb3-c3 Rd2-a2 Kc3-d3 Ke8-d7 Rf5-f8 Kd7xd6) 0.00/11 0} 58. Kxb3 {(Kb2xb3 f3-f2 d6-d7+ Ke8xd7) 0.00/14 0} f2 {(f3-f2 Kb3-c3 Rd2-a2 Kc3-d3 Ke8-d7 Rf5-f8 Kd7xd6) 0.00/12 0} 59. d7+ {(d6-d7+ Ke8xd7) 0.00/12 0} Kd8 {(Ke8-d8 Rf5-f8+ Kd8-c7 d7-d8Q+ Rd2xd8 Rf8xf2) 0.00/13 0} 60. Rf8+ {(Rf5-f8+ Kd8xd7) 0.00/12 0} Kc7 {(Kd8-c7 d7-d8Q+ Rd2xd8 Rf8xf2) 0.00/13 0} 61. d8=Q+ {(d7-d8Q+ Rd2xd8 Rf8xf2) 0.00/12 0} Rxd8 {(Rd2xd8 Rf8xf2) 0.00/90 0} 62. Rxf2 {(Rf8xf2 Kc7-d7) 0.00/3 0} Kd7 {(Kc7-d7 Kb3-c3 Rd8-e8 Kc3-d3 Kd7-d6 Rf2-e2 Re8xe2 Kd3xe2 Kd6-d5 Ke2-d3 Kd5-e5 Kd3-e3 Ke5-e6 Ke3-d3 Ke6-d5 Kd3-e3 Kd5-e5 Ke3-d3 Ke5-e6 Kd3-e3) 0.00/48 0} 63. Rf6 {(Rf2-f6 Rd8-c8 Rf6-f7+ Kd7-e6 Rf7-f4 Ke6-d5 Rf4-f7 Kd5-e5 Rf7-e7+ Ke5-f5 Re7-f7+ Kf5-e6 Rf7-f4 Ke6-d5 Rf4-f7 Kd5-e5 Rf7-e7+ Ke5-f5 Re7-f7+ Kf5-e6) 0.00/48 0} Re8 {(Rd8-e8 Rf6-f7+ Kd7-e6 Rf7-b7 Re8-d8 Rb7-b6+ Ke6-e7 Rb6-a6 Rd8-d7 Kb3-c3 Rd7-b7 Kc3-d3 Rb7-b2 Kd3-e3 Rb2-b3+ Ke3-f2 Rb3-h3 Ra6-a4 Rh3-h2+ Kf2-e3) 0.00/28 0} 64. Rf5 {(Rf6-f5 Re8-a8 Rf5-f6 Kd7-e7 Rf6-f5 Ke7-e6 Rf5-f4 Ke6-d5 Rf4-f7 Kd5-e5 Rf7-e7+ Ke5-f5 Re7-f7+ Kf5-e6 Rf7-f4 Ke6-d5 Rf4-f7 Kd5-e5 Rf7-e7+ Ke5-f5) 0.00/32 0} Re3+ {(Re8-e3+ Kb3-c2 Re3-e8 Kc2-d2 Re8-d8 Rf5-f1 Rd8-e8 Rf1-f6 Re8-d8 Rf6-f4 Rd8-e8 Rf4-f7+ Kd7-e6 Rf7-b7 Re8-d8+ Kd2-e3 Rd8-e8 Rb7-b6+ Ke6-e7 Rb6-a6) 0.00/30 0} 65. Kc4 {(Kb3-c4 Re3-e1 Rf5-f4 Re1-e2 Rf4-f7+ Kd7-e6 Rf7-f8 Re2-b2 Rf8-f4 Rb2-h2 Rf4-e4+ Ke6-f5 Kc4-d4 Rh2-c2 Re4-e1 Rc2-g2 Re1-e5+ Kf5-f4) 0.00/16 0} Re8 {(Re3-e8 Rf5-f4 Re8-e3 Kc4-d4 Re3-e8 Rf4-f7+ Kd7-e6 Rf7-b7 Re8-d8+ Kd4-c3 Rd8-e8 Kc3-d3 Re8-d8+ Kd3-e2 Rd8-e8 Ke2-d3 Re8-d8+ Kd3-e2 Rd8-e8 Ke2-d3) 0.00/31 0} 66. Rf4 {(Rf5-f4 Re8-a8 Kc4-d4 Ra8-a4+ Kd4-e3 Ra4xf4 Ke3xf4 Kd7-e6 Kf4-e3 Ke6-d5 Ke3-f4 Kd5-c4 Kf4-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3 Ke5-f6 Kc3-c4) 0.00/31 0} Re3 {(Re8-e3 Kc4-d4 Re3-e8 Rf4-f7+ Kd7-e6 Rf7-b7 Re8-d8+ Kd4-c3 Rd8-e8 Kc3-d3 Re8-d8+ Kd3-e2 Rd8-e8 Ke2-d3 Re8-d8+ Kd3-e2 Rd8-e8 Ke2-d3 Re8-d8+ Kd3-e2) 0.00/35 0} 67. Kd4 {(Kc4-d4 Re3-e6 Rf4-e4 Re6xe4+ Kd4xe4 Kd7-e6 Ke4-e3 Ke6-d5 Ke3-f4 Kd5-c4 Kf4-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3) 0.00/32 0} Re8 {(Re3-e8 Rf4-f7+ Kd7-e6 Rf7-b7 Re8-d8+ Kd4-c3 Rd8-e8 Kc3-d3 Re8-d8+ Kd3-e2 Rd8-e8 Ke2-d3 Re8-d8+ Kd3-e2 Rd8-e8 Ke2-d3 Re8-d8+ Kd3-e2 Rd8-e8 Ke2-d3) 0.00/45 0} 68. Re4 {(Rf4-e4 Re8xe4+ Kd4xe4 Kd7-e6 Ke4-e3 Ke6-d5 Ke3-f4 Kd5-c4 Kf4-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3 Ke5-f6 Kc3-c4) 0.00/39 0} Rxe4+ {(Re8xe4+ Kd4xe4 Kd7-c7 Ke4-e3 Kc7-d7 Ke3-d3 Kd7-c7 Kd3-e3 Kc7-d7 Ke3-d3 Kd7-c7 Kd3-e3 Kc7-d7 Ke3-d3 Kd7-c7 Kd3-e3 Kc7-d7 Ke3-d3 Kd7-c7 Kd3-e3) 0.00/38 0} 69. Kxe4 {(Kd4xe4 Kd7-e6 Ke4-e3 Ke6-d5 Ke3-f4 Kd5-c4 Kf4-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3 Ke5-f6 Kc3-c4 Kf6-e5 Kc4-c3) 0.00/1 0 Insufficient material} 1/2-1/2
Antaniserse commented 7 years ago

I just noticed also another issue with the FEN tag: if you access the value from the Game.Tags dictionary, instead of getting the original string, you seem to get the ASCII diagram of the board... in the example above, Game.Tags("FEN") returns

---------------------------------
| R |   | B |   |   | R | K |   |
---------------------------------
| P | P |   |   | P | P | B | P |
---------------------------------
|   |   | N |   |   | N | P |   |
---------------------------------
| Q |   | p | P |   |   | b |   |
---------------------------------
|   |   |   |   |   |   |   |   |
---------------------------------
|   |   | n |   | p |   |   |   |
---------------------------------
| p | p | p | q |   | p | p | p |
---------------------------------
|   | k |   | r |   | b | n | r |
---------------------------------
Antaniserse commented 7 years ago

I really am not skilled in F#, so i might be completely misunderstanding the code, but I think the idea was to add an additional custom tag to keep the ASCII diagram (given by boardSetup.toString()), that was intended to be filtered out by the game.toString() method, to show only the actual tags of the game/file

It has been, however, added in the dictionary by mistake using the "FEN" name, instead of some arbitrary new one, and thus it overwrites the standard FEN tag

sayedihashimi commented 7 years ago

I just noticed also another issue with the FEN tag: if you access the value from the Game.Tags dictionary, instead of getting the original string, you seem to get the ASCII diagram of the board

I am seeing the same thing

Antaniserse commented 6 years ago

This is a very crude patch, and it only fixes the Game.Tags dictionary, not the Game.ToString() issue, but it gets the job done for what I'm doing, so in case someone find it usefull too, here it is:

In Pgn.Data.BoardSetup.cs replace .ToString() with:

public override string ToString()
        {
            string output = "";

            Piece piece;
            string row,pieceStr,castleStr,epStr;
            int emptySquares;

            for (int iRank = 0; iRank < 8; ++iRank)
            {
                row = "";
                emptySquares = 0;
                for (int iFile = 0; iFile < 8; ++iFile)
                {
                    piece = this[iFile, iRank];
                    if (piece == null)
                    {
                        emptySquares += 1;
                    }
                    else
                    {
                        if (emptySquares > 0) row += emptySquares.ToString();
                        pieceStr = PieceToString(this[iFile, iRank]);
                        row += pieceStr.Trim();
                        emptySquares = 0;
                    }
                    if (iFile > 0 & iFile % 7 == 0)
                    {
                        if (emptySquares > 0) row += emptySquares.ToString();
                        output += row;
                        if (iRank < 7) output += "/";
                    }
                }
            }

            if (IsWhiteMove)
                output += " w";
            else
                output += " b";

            castleStr = " ";
            if (CanWhiteCastleKingSide)
                castleStr += "K";
            if (CanWhiteCastleQueenSide)
                castleStr += "Q";
            if (CanBlackCastleKingSide )
                castleStr += "k";
            if (CanBlackCastleQueenSide)
                castleStr += "q";

            if (castleStr.Length > 1)
                output += castleStr;
            else
                output += " -";

            epStr = "-";
            if (EnPassantSquare != null)
                epStr = EnPassantSquare.ToString();
            output += " " + epStr;

            output += " " + HalfMoveClock.ToString();
            output += " " + FullMoveCount.ToString();

            return output;
        }