Chess.jl – new version

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

Tord
Posts: 31
Joined: Tue Feb 27, 2018 11:29 am

Chess.jl – new version

Post by Tord »

I just released a version 0.7 of the Chess.jl library.

The main new features this time are better support for Pluto notebooks, a built-in opening book, and much better documentation. The tutorial is now also available as a downloadable Pluto notebook.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Chess.jl – new version

Post by Ferdy »

Thanks for sharing.

Created my first julia script :)

Sample output:

[pgn]
[Event "New in Chess Classic Prelims 2021"]
[Site "http://www.chessbomb.com"]
[Date "Sat Apr 24 2021"]
[Round "01"]
[White "Carlsen, Magnus"]
[Black "Karjakin, Sergey"]
[Result "1/2-1/2"]
[WhiteFideId "1503014"]
[BlackFideId "14109603"]
[WhiteElo "2847"]
[BlackElo "2757"]
[TimeControl "900+10"]
[WhiteClock "0:01:29"]
[BlackClock "0:01:07"]
[Annotator "Stockfish @500 ms/pos"]

1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. c3 O-O 6. O-O d5 7. exd5 Qxd5 8. Bc4 {game: Bc4 0.0/17} Qd8 {game: Qd8 -0.0/17, engine: Qd6 -0.0/18} 9. b4 {game: b4 0.0/17} Bd6 {game: Bd6 -0.0/17, engine: Be7 -0.0/19} 10. Nbd2 {game: Nbd2 0.0/17, engine: Re1 0.0/18} h6 {game: h6 -0.0/18, engine: Ne7 -0.0/19} 11. Re1 {game: Re1 0.0/18} Re8 {game: Re8 -0.0/18, engine: a6 -0.0/18} 12. Bb2 {game: Bb2 0.0/18, engine: a4 0.0/17} a6 {game: a6 -0.0/17, engine: Bf5 -0.0/18} 13. a4 {game: a4 0.0/18, engine: Qc2 0.0/16} Be6 {game: Be6 -1.0/18, engine: Bf5 -0.0/19} 14. b5 {game: b5 1.0/19} Na5 {game: Na5 -1.0/18, engine: axb5 -1.0/19} 15. Bxe6 {game: Bxe6 1.0/19} Rxe6 {game: Rxe6 -1.0/19} 16. c4 {game: c4 1.0/18} Qe7 {game: Qe7 -1.0/18} 17. Qc2 {game: Qc2 1.0/17, engine: Nf1 1.0/17} Nd7 {game: Nd7 -1.0/17, engine: c6 -1.0/17} 18. Re2 {game: Re2 0.0/16, engine: h3 1.0/17} Re8 {game: Re8 -1.0/17, engine: Nc5 -1.0/17} 19. Rae1 {game: Rae1 1.0/18} axb5 {game: axb5 -1.0/19, engine: Bb4 -1.0/18} 20. axb5 {game: axb5 1.0/18, engine: cxb5 1.0/20} b6 {game: b6 -1.0/19} 21. d4 {game: d4 0.0/20, engine: Bc3 0.0/17} exd4 {game: exd4 -0.0/20} 22. Rxe6 {game: Rxe6 0.0/22} fxe6 {game: fxe6 -0.0/20} 23. Bxd4 {game: Bxd4 0.0/20, engine: Nxd4 0.0/19} Bb4 {game: Bb4 -0.0/15, engine: e5 -0.0/19} 24. h3 {game: h3 0.0/16} Nb7 {game: Nb7 -0.0/18} 25. Re2 {game: Re2 0.0/17, engine: Qb3 0.0/17} Bxd2 {game: Bxd2 -1.0/16, engine: Qf7 -0.0/18} 26. Rxd2 {game: Rxd2 1.0/18} Nd6 {game: Nd6 -1.0/18, engine: e5 -1.0/20} 27. Re2 {game: Re2 0.0/19, engine: Ne5 1.0/20} Qf7 {game: Qf7 -1.0/18} 28. Ne5 {game: Ne5 0.0/20, engine: Qa2 0.0/18} Nxe5 {game: Nxe5 -1.0/17, engine: Qf4 -0.0/20} 29. Bxe5 {game: Bxe5 1.0/19} Qf5 {game: Qf5 -1.0/18} 30. Qc3 {game: Qc3 1.0/18} Re7 {game: Re7 -1.0/20} 31. Kh2 {game: Kh2 1.0/17, engine: Qa3 1.0/18} Nb7 $2 {game: Nb7 -2.0/17, engine: Rd7 -1.0/19} 32. Qg3 {game: Qg3 2.0/19} Na5 {game: Na5 -3.0/20, engine: Qg5 -2.0/18} 33. Qc3 {game: Qc3 1.0/19, engine: c5 4.0/19} Rd7 {game: Rd7 -2.0/19} 34. c5 {game: c5 2.0/19} Rd3 {game: Rd3 -1.0/18} 35. Qc2 {game: Qc2 0.0/20, engine: Qb4 1.0/17} Rd5 {game: Rd5 -0.0/22} 36. cxb6 {game: cxb6 0.0/21} Qxc2 {game: Qxc2 -0.0/23} 37. Rxc2 {game: Rxc2 0.0/24} cxb6 {game: cxb6 -0.0/25} 38. Rc8+ {game: Rc8+ 0.0/19} Kh7 {game: Kh7 -0.0/22} 39. f4 {game: f4 0.0/22} g5 {game: g5 -0.0/22} 40. Rc7+ {game: Rc7+ 0.0/21} Kg8 {game: Kg8 -0.0/22} 41. Rg7+ {game: Rg7+ 0.0/22, engine: Re7 0.0/20} Kf8 {game: Kf8 -0.0/22} 42. Rg6 {game: Rg6 0.0/19} Nc4 {game: Nc4 -0.0/20} 43. Bc3 {game: Bc3 0.0/22, engine: Rxe6 0.0/19} gxf4 {game: gxf4 0.0/22} 44. Rxe6 {game: Rxe6 0.0/24} Rxb5 {game: Rxb5 -0.0/24} 45. Rxh6 {game: Rxh6 0.0/22, engine: Re4 0.0/23} Rf5 {game: Rf5 0.0/24} 46. Rc6 {game: Rc6 0.0/22, engine: Kg1 0.0/23} b5 {game: b5 0.0/24} 47. Rc7 {game: Rc7 0.0/20, engine: Kg1 0.0/24} f3 {game: f3 0.0/18, engine: Rg5 0.0/20} 48. gxf3 {game: gxf3 0.0/19} Rxf3 {game: Rxf3 0.0/22} 49. Bd4 {game: Bd4 -0.0/17, engine: Bb4+ 0.0/21} Rd3 {game: Rd3 0.0/17, engine: Nd2 0.0/17} 50. Bf6 {game: Bf6 0.0/18, engine: Ba1 0.0/18} Rf3 {game: Rf3 -0.0/18} 51. Bd4 {game: Bd4 0.0/18, engine: Bg5 0.0/18} Rd3 {game: Rd3 0.0/19} 52. Bc5+ {game: Bc5+ 0.0/18, engine: Ba1 0.0/18} Kg8 {game: Kg8 -0.0/18, engine: Ke8 0.0/18} 53. Rb7 {game: Rb7 0.0/19} Rb3 {game: Rb3 -0.0/17, engine: Rd5 -0.0/19} 54. h4 {game: h4 0.0/19} Ne5 {game: Ne5 -0.0/17, engine: Na5 -0.0/17} 55. h5 {game: h5 0.0/18, engine: Bd6 0.0/18} Rd3 {game: Rd3 -0.0/18} 56. Kg2 {game: Kg2 0.0/19} Rd5 {game: Rd5 0.0/19} 57. Be3 {game: Be3 0.0/22, engine: Rb8+ 0.0/20} Nc4 {game: Nc4 0.0/23} 58. Bf4 {game: Bf4 -0.0/20, engine: Rb8+ 0.0/23} Rxh5 {game: Rxh5 0.0/20} 59. Kf3 {game: Kf3 -0.0/20, engine: Rc7 -0.0/19} Kf8 {game: Kf8 0.0/19, engine: Na5 0.0/22} 60. Ke4 {game: Ke4 -0.0/18, engine: Bg3 -0.0/18} Ke8 {game: Ke8 0.0/21, engine: Na5 0.0/20} 61. Rg7 {game: Rg7 -0.0/19, engine: Ra7 -0.0/18} Kf8 {game: Kf8 0.0/21, engine: Na5 0.0/20} 62. Rg5 {game: Rg5 -0.0/18, engine: Ra7 -0.0/20} Rxg5 {game: Rxg5 0.0/23} 63. Bxg5 {game: Bxg5 -0.0/24} b4 {game: b4 0.0/24, engine: Kf7 0.0/25} 64. Kd4 {game: Kd4 -0.0/28, engine: Bc1 -0.0/26} b3 {game: b3 0.0/31} 65. Bc1 {game: Bc1 -0.0/31} b2 {game: b2 0.0/33} 66. Bxb2 {game: Bxb2 -0.0/34} Nxb2 {game: Nxb2 0.0/34} 1/2-1/2

[Event "New in Chess Classic Prelims 2021"]
[Site "http://www.chessbomb.com"]
[Date "Sat Apr 24 2021"]
[Round "01"]
[White "Nakamura, Hikaru"]
[Black "Mamedyarov, Shakhriyar"]
[Result "1-0"]
[WhiteFideId "2016192"]
[BlackFideId "13401319"]
[WhiteElo "2736"]
[BlackElo "2770"]
[TimeControl "900+10"]
[WhiteClock "0:02:52"]
[BlackClock "0:03:19"]
[Annotator "Stockfish @500 ms/pos"]

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8. dxe5 {game: dxe5 0.0/18, engine: Nxe5 0.0/17} Be6 {game: Be6 -0.0/19} 9. Nbd2 {game: Nbd2 0.0/19, engine: c3 0.0/18} Nc5 {game: Nc5 -0.0/19} 10. c3 {game: c3 0.0/19} d4 {game: d4 -0.0/18} 11. Bxe6 {game: Bxe6 1.0/20} Nxe6 {game: Nxe6 -0.0/22} 12. cxd4 {game: cxd4 1.0/21} Ncxd4 {game: Ncxd4 -1.0/21} 13. a4 {game: a4 0.0/17, engine: Ne4 0.0/20} Bb4 {game: Bb4 -1.0/20, engine: Rb8 -1.0/17} 14. axb5 {game: axb5 0.0/21} Nxb5 {game: Nxb5 -0.0/20} 15. Qa4 {game: Qa4 0.0/19} Bxd2 {game: Bxd2 -0.0/21} 16. Bxd2 {game: Bxd2 0.0/19} O-O {game: O-O -0.0/19} 17. Rfd1 {game: Rfd1 0.0/19} c5 {game: c5 -0.0/19} 18. Be3 {game: Be3 0.0/17, engine: h3 0.0/18} Qb6 {game: Qb6 -0.0/18} 19. Rac1 {game: Rac1 0.0/16, engine: h4 0.0/18} a5 {game: a5 -0.0/21} 20. Qc4 {game: Qc4 -0.0/20, engine: Rd3 0.0/18} Rac8 {game: Rac8 -0.0/17, engine: Rfd8 0.0/22} 21. Ng5 {game: Ng5 0.0/18} Nxg5 {game: Nxg5 -0.0/20} 22. Bxg5 {game: Bxg5 0.0/22} Qb7 {game: Qb7 -0.0/21} 23. Be3 {game: Be3 0.0/22} Rfe8 {game: Rfe8 -1.0/19, engine: Nd4 -0.0/23} 24. Qd5 {game: Qd5 1.0/19} Qb8 {game: Qb8 -1.0/20} 25. Rxc5 {game: Rxc5 1.0/21} Rcd8 {game: Rcd8 -1.0/20} 26. Qf3 {game: Qf3 1.0/19} h6 $2 {game: h6 -2.0/18, engine: Nc7 -1.0/20} 27. Rxd8 {game: Rxd8 1.0/20, engine: h4 1.0/19} Rxd8 {game: Rxd8 -1.0/21} 28. h3 {game: h3 1.0/18} Nd4 $4 {game: Nd4 -3.0/21, engine: Nc7 -1.0/19} 29. Bxd4 {game: Bxd4 3.0/21} Rxd4 {game: Rxd4 -3.0/21} 30. Rxa5 {game: Rxa5 3.0/21} Rd8 {game: Rd8 -4.0/20} 31. b3 {game: b3 3.0/21} Qb4 {game: Qb4 -4.0/23} 32. Ra8 {game: Ra8 4.0/24} Qe1+ {game: Qe1+ -3.0/21, engine: Rxa8 -4.0/21} 33. Kh2 {game: Kh2 4.0/22} Qxe5+ {game: Qxe5+ -4.0/20} 34. g3 {game: g3 4.0/20} Rxa8 {game: Rxa8 -4.0/20, engine: Rf8 -3.0/19} 35. Qxa8+ {game: Qxa8+ 4.0/22} Kh7 {game: Kh7 -4.0/22} 36. Qf3 {game: Qf3 4.0/20, engine: Qc6 4.0/20} f5 {game: f5 -4.0/21, engine: Kg6 -4.0/19} 37. b4 {game: b4 4.0/23} Qb5 {game: Qb5 -4.0/20} 38. Qc3 {game: Qc3 4.0/20, engine: Qf4 4.0/21} Qe2 {game: Qe2 -5.0/20, engine: Kg6 -4.0/21} 39. Qc5 {game: Qc5 6.0/20, engine: Qd4 5.0/20} Qe4 {game: Qe4 -6.0/19} 40. b5 {game: b5 6.0/22} f4 {game: f4 -6.0/19, engine: Qf3 -6.0/20} 41. g4 {game: g4 7.0/20} Qf3 {game: Qf3 -7.0/20} 42. b6 {game: b6 7.0/23} g6 {game: g6 -14.0/19, engine: Kg8 -7.0/19} 43. Qc2 {game: Qc2 13.0/17, engine: Qc7+ 21.0/21} Kg8 {game: Kg8 -21.0/18} 44. Qxg6+ {game: Qxg6+ 10.0/19, engine: Qa2+ 36.0/19} 1-0

[Event "New in Chess Classic Prelims 2021"]
[Site "http://www.chessbomb.com"]
[Date "Sat Apr 24 2021"]
[Round "01"]
[White "Firouzja, Alireza"]
[Black "So, Wesley"]
[Result "1-0"]
[WhiteFideId "12573981"]
[BlackFideId "5202213"]
[WhiteElo "2759"]
[BlackElo "2770"]
[TimeControl "900+10"]
[WhiteClock "0:00:33"]
[BlackClock "0:01:29"]
[Annotator "Stockfish @500 ms/pos"]

1. d4 Nf6 2. Nf3 d5 3. Bf4 c5 4. e3 Nc6 5. Nbd2 e6 6. c3 cxd4 7. exd4 Nh5 8. Be3 {game: Be3 0.0/18, engine: Bg5 0.0/17} Bd6 {game: Bd6 -0.0/19} 9. Bb5 {game: Bb5 0.0/17, engine: Bd3 0.0/20} O-O {game: O-O 0.0/19} 10. O-O {game: O-O 0.0/20} Qc7 {game: Qc7 -0.0/16, engine: Ne7 -0.0/18} 11. Re1 {game: Re1 0.0/16, engine: c4 0.0/18} a6 {game: a6 -0.0/18, engine: Ne7 -0.0/18} 12. Bd3 {game: Bd3 0.0/18, engine: Bxc6 0.0/19} g6 {game: g6 -1.0/15, engine: Nf4 -0.0/18} 13. Rc1 {game: Rc1 1.0/17, engine: c4 1.0/16} b5 {game: b5 -1.0/19} 14. a4 {game: a4 0.0/17, engine: g3 1.0/18} bxa4 {game: bxa4 -0.0/17} 15. Qxa4 {game: Qxa4 0.0/17, engine: c4 0.0/16} Bd7 {game: Bd7 -0.0/19} 16. Qc2 {game: Qc2 0.0/18, engine: Qa2 0.0/17} Rab8 {game: Rab8 -1.0/17, engine: a5 -0.0/18} 17. Nb3 {game: Nb3 -0.0/19, engine: Bxa6 0.0/17} Qb6 $2 {game: Qb6 -2.0/19, engine: e5 0.0/21} 18. Nc5 {game: Nc5 1.0/19} Bxc5 {game: Bxc5 -1.0/18} 19. dxc5 {game: dxc5 1.0/18} Qxb2 {game: Qxb2 -1.0/18} 20. Qxb2 {game: Qxb2 1.0/18, engine: Qd1 2.0/18} Rxb2 {game: Rxb2 -1.0/19} 21. Bxa6 {game: Bxa6 1.0/18} e5 {game: e5 -1.0/18, engine: Ra8 -1.0/18} 22. Bh6 {game: Bh6 1.0/18} Ra8 {game: Ra8 -1.0/19, engine: Re8 -1.0/18} 23. Ra1 {game: Ra1 -0.0/16, engine: Bf1 1.0/20} Ng7 {game: Ng7 0.0/17} 24. c4 {game: c4 0.0/20} d4 {game: d4 -0.0/18} 25. Bb5 {game: Bb5 0.0/20} Rxa1 {game: Rxa1 -1.0/21} 26. Rxa1 {game: Rxa1 1.0/23} f6 {game: f6 -0.0/22} 27. Nd2 {game: Nd2 -0.0/18, engine: Bc1 0.0/22} Nf5 {game: Nf5 0.0/18, engine: Kf7 0.0/19} 28. Ne4 {game: Ne4 -0.0/20} Kf7 {game: Kf7 0.0/21} 29. Bd2 {game: Bd2 -0.0/21} d3 {game: d3 0.0/19} 30. f4 {game: f4 -0.0/15, engine: Kf1 -0.0/20} exf4 {game: exf4 1.0/18, engine: Nfd4 0.0/17} 31. Bc3 {game: Bc3 -1.0/19, engine: Bxf4 -1.0/15} Rc2 {game: Rc2 1.0/18, engine: Re2 1.0/18} 32. Ba4 {game: Ba4 -1.0/19} Nfd4 {game: Nfd4 -1.0/20, engine: Re2 0.0/19} 33. Bxc2 $2 {game: Bxc2 -2.0/17, engine: Bxd4 0.0/18} dxc2 {game: dxc2 1.0/18} 34. Bb2 {game: Bb2 -1.0/18} Nb3 {game: Nb3 1.0/17, engine: g5 1.0/17} 35. Re1 {game: Re1 -1.0/18} Ne5 {game: Ne5 -0.0/20, engine: g5 1.0/18} 36. Nxf6 {game: Nxf6 1.0/22} Nd3 {game: Nd3 -1.0/21} 37. Nxd7 {game: Nxd7 0.0/22} Nxe1 {game: Nxe1 -0.0/22} 38. Ne5+ {game: Ne5+ 0.0/21} Ke6 {game: Ke6 -0.0/22} 39. c6 {game: c6 0.0/23} Kd6 {game: Kd6 -0.0/23} 40. Kf2 {game: Kf2 0.0/24} Nxg2 {game: Nxg2 -0.0/23} 41. Ba3+ {game: Ba3+ 0.0/22} Kc7 {game: Kc7 -0.0/23} 42. Kxg2 {game: Kxg2 0.0/24} c1=R {game: c1=R -1.0/24, engine: g5 -0.0/22} 43. Bxc1 {game: Bxc1 1.0/25} Nxc1 {game: Nxc1 -0.0/25} 44. Kf3 {game: Kf3 0.0/26} g5 {game: g5 -0.0/27} 45. Kg4 {game: Kg4 0.0/28} h6 {game: h6 -0.0/29} 46. Kh5 {game: Kh5 0.0/25} f3 {game: f3 -0.0/23, engine: Nb3 -0.0/27} 47. Nxf3 {game: Nxf3 1.0/24} Kxc6 $2 {game: Kxc6 -2.0/25, engine: Nd3 -0.0/25} 48. Kxh6 {game: Kxh6 3.0/29} g4 {game: g4 -4.0/27} 49. Ne5+ {game: Ne5+ 4.0/27} Kc5 {game: Kc5 -4.0/27} 50. Kg5 {game: Kg5 4.0/24} Kd4 {game: Kd4 -7.0/22, engine: g3 -5.0/23} 51. Nxg4 {game: Nxg4 5.0/24} Ne2 {game: Ne2 -5.0/26} 52. h4 {game: h4 7.0/24} Ng3 {game: Ng3 -7.0/24} 53. Nf6 {game: Nf6 7.0/24} Kxc4 {game: Kxc4 -8.0/22, engine: Ke5 -8.0/23} 54. Kg4 {game: Kg4 8.0/22} 1-0

[Event "New in Chess Classic Prelims 2021"]
[Site "http://www.chessbomb.com"]
[Date "Sat Apr 24 2021"]
[Round "01"]
[White "Duda, Jan-Krzysztof"]
[Black "Praggnanandhaa, R"]
[Result "0-1"]
[WhiteFideId "1170546"]
[BlackFideId "25059530"]
[WhiteElo "2729"]
[BlackElo "2608"]
[TimeControl "900+10"]
[WhiteClock "0:00:07"]
[BlackClock "0:00:36"]
[Annotator "Stockfish @500 ms/pos"]

1. d4 Nf6 2. c4 e6 3. Nf3 d5 4. Nc3 dxc4 5. e4 b5 6. e5 Nd5 7. Nxb5 Nb6 8. Be2 {game: Be2 1.0/17, engine: Nc3 1.0/16} Nc6 {game: Nc6 -0.0/19, engine: Bb7 -1.0/19} 9. O-O {game: O-O 1.0/18} Be7 {game: Be7 -1.0/19, engine: Bb7 -0.0/18} 10. Be3 {game: Be3 0.0/18} O-O {game: O-O -0.0/18} 11. Qc1 {game: Qc1 0.0/17, engine: Nc3 0.0/17} Nb4 {game: Nb4 -0.0/17, engine: Bb7 0.0/19} 12. a3 {game: a3 -0.0/17, engine: Nc3 0.0/18} Nd3 {game: Nd3 -1.0/16, engine: N4d5 0.0/17} 13. Qc2 {game: Qc2 1.0/18} c6 {game: c6 -1.0/20, engine: Qd7 -1.0/18} 14. Nc3 {game: Nc3 1.0/16, engine: Nd6 1.0/20} Ba6 {game: Ba6 -1.0/17, engine: c5 -1.0/16} 15. Rfd1 {game: Rfd1 -0.0/18, engine: Ne4 1.0/18} Nd5 {game: Nd5 -0.0/18} 16. b3 {game: b3 0.0/21, engine: Ne4 0.0/16} cxb3 {game: cxb3 -0.0/22} 17. Qd2 {game: Qd2 0.0/23} Nxc3 {game: Nxc3 -0.0/22} 18. Qxc3 {game: Qxc3 0.0/24} Nb4 {game: Nb4 -0.0/23} 19. Bxa6 {game: Bxa6 0.0/23} Nxa6 {game: Nxa6 -0.0/23} 20. Qxb3 {game: Qxb3 0.0/21} Nc7 {game: Nc7 -0.0/21} 21. Rac1 {game: Rac1 0.0/18, engine: Rdc1 0.0/21} Qd7 {game: Qd7 -0.0/20, engine: Qd5 0.0/17} 22. Bg5 {game: Bg5 -0.0/19, engine: Qb7 0.0/20} Nd5 {game: Nd5 0.0/20, engine: Rfb8 0.0/20} 23. Bxe7 {game: Bxe7 0.0/21} Nxe7 {game: Nxe7 -0.0/22} 24. Ng5 {game: Ng5 0.0/22} Rfd8 {game: Rfd8 -1.0/19, engine: h6 0.0/21} 25. Qd3 {game: Qd3 1.0/20} Ng6 {game: Ng6 -1.0/18, engine: Nf5 -1.0/20} 26. Qf3 {game: Qf3 0.0/18, engine: h4 1.0/20} Rab8 {game: Rab8 -0.0/16, engine: Qe7 -0.0/18} 27. g3 {game: g3 -0.0/20, engine: Qg4 0.0/16} Rb5 {game: Rb5 0.0/22} 28. Ne4 {game: Ne4 0.0/23} Rd5 {game: Rd5 0.0/25} 29. Nd6 {game: Nd6 0.0/26} f6 {game: f6 -0.0/21, engine: c5 0.0/27} 30. Rb1 {game: Rb1 0.0/21} c5 {game: c5 -1.0/18, engine: fxe5 0.0/22} 31. Rb7 {game: Rb7 -0.0/21, engine: Nb7 1.0/20} Nxe5 {game: Nxe5 0.0/24} 32. Qxd5 {game: Qxd5 -0.0/24, engine: dxe5 0.0/25} exd5 {game: exd5 0.0/23} 33. Rxd7 {game: Rxd7 0.0/24} Nxd7 {game: Nxd7 0.0/25} 34. Nb7 {game: Nb7 0.0/24} Rc8 {game: Rc8 -0.0/23} 35. dxc5 {game: dxc5 0.0/24} Rc7 {game: Rc7 0.0/22} 36. c6 {game: c6 0.0/23} Nb6 {game: Nb6 0.0/19, engine: Rxc6 0.0/23} 37. Na5 {game: Na5 0.0/20} Kf7 {game: Kf7 0.0/21} 38. Kg2 {game: Kg2 0.0/18, engine: Kf1 0.0/22} Ke6 {game: Ke6 0.0/22, engine: Rc8 0.0/21} 39. Nb7 {game: Nb7 0.0/23} Ke5 {game: Ke5 -0.0/21, engine: Nc4 0.0/20} 40. Re1+ {game: Re1+ -1.0/20, engine: f4+ 0.0/21} Kd4 {game: Kd4 1.0/22} 41. Nd8 {game: Nd8 -0.0/23} Kd3 {game: Kd3 1.0/24} 42. Re3+ $2 {game: Re3+ -2.0/18, engine: Rc1 -0.0/23} Kd2 {game: Kd2 2.0/20} 43. Re6 {game: Re6 -2.0/18, engine: a4 -2.0/19} Nc4 {game: Nc4 2.0/20} 44. f4 {game: f4 -3.0/19, engine: h4 -2.0/20} Kc3 {game: Kc3 3.0/18, engine: Rc8 3.0/20} 45. Nb7 {game: Nb7 -4.0/20, engine: Kf2 -3.0/20} d4 {game: d4 5.0/20} 46. Nd6 {game: Nd6 -6.0/22, engine: Nc5 -4.0/20} Nxd6 {game: Nxd6 6.0/23} 47. Rxd6 {game: Rxd6 -6.0/23} d3 {game: d3 6.0/25} 48. Kf2 {game: Kf2 -7.0/21, engine: Kf3 -6.0/23} d2 {game: d2 8.0/22} 49. Kf3 {game: Kf3 -8.0/21} Kc2 {game: Kc2 8.0/22} 50. Ke4 {game: Ke4 -8.0/21} Re7+ {game: Re7+ 8.0/22} 0-1
[/pgn]

I can't figure out how to add alternative move as variation. So far I only have alternative move as a comment.

The fen() outputs an epd, perhaps change its name from fen() to epd().
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Chess.jl – new version

Post by Ferdy »

Ferdy wrote: Sat May 01, 2021 10:38 pm I can't figure out how to add alternative move as variation. So far I only have alternative move as a comment.
All right figured it out finally.

Sample game.

[pgn][Event "New in Chess Classic Prelims 2021"]
[Site "http://www.chessbomb.com"]
[Date "Sat Apr 24 2021"]
[Round "01"]
[White "Nakamura, Hikaru"]
[Black "Mamedyarov, Shakhriyar"]
[Result "1-0"]
[WhiteFideId "2016192"]
[BlackFideId "13401319"]
[WhiteElo "2736"]
[BlackElo "2770"]
[TimeControl "900+10"]
[WhiteClock "0:02:52"]
[BlackClock "0:03:19"]
[Annotator "Stockfish @500 ms/pos"]

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8. dxe5 {0.0/18} Be6 {-1.0/19} 9. Nbd2 {0.0/19} (9. c3 {0.0/18}) Nc5 {-0.0/20} 10. c3 {0.0/21} d4 {-0.0/19} 11. Bxe6 {1.0/20} Nxe6 {-0.0/22} 12. cxd4 {1.0/22} Ncxd4 {-1.0/21} 13. a4 {0.0/18} (13. Ne4 {1.0/22}) Bb4 {-0.0/19} (13... Be7 {-0.0/18}) 14. axb5 {0.0/20} Nxb5 {-0.0/19} 15. Qa4 {0.0/21} (15. Nc4 {0.0/19}) Bxd2 {-0.0/20} (15... c5 {-0.0/22}) 16. Bxd2 {0.0/20} O-O {-0.0/19} 17. Rfd1 {0.0/19} c5 {-0.0/19} 18. Be3 {0.0/19} (18. Qe4 {0.0/17}) Qb6 {-0.0/19} 19. Rac1 {0.0/17} (19. h4 {0.0/16}) a5 {0.0/18} 20. Qc4 {-0.0/19} (20. Rd5 {-0.0/18}) Rac8 {-0.0/17} (20... Rfd8 {0.0/21}) 21. Ng5 {0.0/19} Nxg5 {-0.0/21} 22. Bxg5 {0.0/22} Qb7 {-0.0/24} 23. Be3 {0.0/22} Rfe8 {-1.0/18} (23... Nd4 {-0.0/25}) 24. Qd5 {1.0/20} Qb8 {-1.0/22} 25. Rxc5 {1.0/21} Rcd8 {-1.0/22} 26. Qf3 {1.0/22} h6 $2 {-2.0/18} (26... Nc7 {-1.0/23}) 27. Rxd8 {1.0/20} (27. h3 {2.0/21}) Rxd8 {-1.0/24} 28. h3 {1.0/21} (28. g3 {1.0/21}) Nd4 $4 {-3.0/22} (28... Nc7 {-1.0/21}) 29. Bxd4 {3.0/22} Rxd4 {-3.0/21} 30. Rxa5 {4.0/20} Rd8 {-3.0/21} 31. b3 {3.0/21} Qb4 {-4.0/21} 32. Ra8 {4.0/22} Qe1+ {-4.0/21} 33. Kh2 {4.0/23} Qxe5+ {-4.0/22} (33... Rxa8 {-4.0/21}) 34. g3 {4.0/23} Rxa8 {-4.0/22} (34... Rf8 {-4.0/21}) 35. Qxa8+ {4.0/22} Kh7 {-4.0/23} 36. Qf3 {3.0/21} (36. Qc6 {4.0/23}) f5 {-4.0/22} (36... Kg6 {-3.0/21}) 37. b4 {4.0/22} Qb5 {-4.0/20} 38. Qc3 {5.0/23} Qe2 {-5.0/19} (38... Kg6 {-5.0/21}) 39. Qc5 {6.0/22} Qe4 {-6.0/20} 40. b5 {6.0/23} f4 {-6.0/23} (40... h5 {-5.0/22}) 41. g4 {7.0/24} Qf3 {-7.0/22} (41... Kg8 {-7.0/22}) 42. b6 {7.0/23} g6 {-11.0/21} (42... Kh8 {-7.0/21}) 43. Qc2 {17.0/22} Kg8 {-19.0/20} 44. Qxg6+ {12.0/19} (44. Qa2+ {21.0/20}) 1-0[/pgn]
Tord
Posts: 31
Joined: Tue Feb 27, 2018 11:29 am

Re: Chess.jl – new version

Post by Tord »

That's an impressive first program!

Two little details: You do things like

Code: Select all

bd = g.node.board
to extract the current board position of the game. This works, but depends on the internal representation of the `Game` data type, which is not recommended. I would do just

Code: Select all

bd = board(g)
instead. This has the further advantage that it works with the SimpleGame type as well as with Game, in case you will ever need that.

Second, you pass a Board to the engine with the setboard command. This is probably not what you want: It means that the engine won't get the move history, and will therefore be unable to detect repetitions or rule 50 draws. You can pass a Game instead of a Board to the engine when using the setboard() function.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Chess.jl – new version

Post by Ferdy »

Tord wrote: Mon May 03, 2021 9:54 am That's an impressive first program!

Two little details: You do things like

Code: Select all

bd = g.node.board
to extract the current board position of the game. This works, but depends on the internal representation of the `Game` data type, which is not recommended. I would do just

Code: Select all

bd = board(g)
instead. This has the further advantage that it works with the SimpleGame type as well as with Game, in case you will ever need that.

Second, you pass a Board to the engine with the setboard command. This is probably not what you want: It means that the engine won't get the move history, and will therefore be unable to detect repetitions or rule 50 draws. You can pass a Game instead of a Board to the engine when using the setboard() function.
Thanks code is updated now.