diff --git a/README.md b/README.md index e69de29..cd526aa 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,26 @@ +# c2g + +Turn your chess PGNs to GIFs! + +## Examples + +Running: + +``` +$ cat example/example.pgn | ./c2g --size 640 --output example/chess.gif +``` + +Will output the following 640x640 GIF: + +![Example](/example/chess.gif) + +## License + +Any file in this project that is not listed as an exception is licensed under the GNU General Public License 3. + +The following (free) exceptions apply: + +| Files | Author(s) | License | +| :-- | :-- | :-- | +| pieces/*.svg | [Colin M.L. Burnett](https://en.wikipedia.org/wiki/User:Cburnett) | [GPLv2+](https://www.gnu.org/licenses/gpl-2.0.txt) | +| font/roboto.ttf | [Christian Robertson](https://fonts.google.com/specimen/Roboto) | [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) | diff --git a/example/chess.gif b/example/chess.gif new file mode 100644 index 0000000..f99c65e Binary files /dev/null and b/example/chess.gif differ diff --git a/example/example.pgn b/example/example.pgn new file mode 100755 index 0000000..94f7729 --- /dev/null +++ b/example/example.pgn @@ -0,0 +1,23 @@ +[Event "Live Chess"] +[Site "Chess.com"] +[Date "2021.02.25"] +[Round "-"] +[White "Firouzja2003"] +[Black "Hikaru"] +[Result "0-1"] +[CurrentPosition "5k1r/5p2/p2p1p2/P2PpP2/5q1p/2pB3P/1rQ2PP1/5NK1 w - -"] +[Timezone "UTC"] +[ECO "C65"] +[ECOUrl "https://www.chess.com/openings/Ruy-Lopez-Opening-Berlin-Defense-4.d3-Bc5"] +[UTCDate "2021.02.25"] +[UTCTime "20:39:59"] +[WhiteElo "3152"] +[BlackElo "3236"] +[TimeControl "180"] +[Termination "Hikaru won by resignation"] +[StartTime "20:39:59"] +[EndDate "2021.02.25"] +[EndTime "20:45:32"] +[Link "https://www.chess.com/live/game/8024656031"] + +1. e4 {[%clk 0:03:00]} 1... e5 {[%clk 0:03:00]} 2. Nf3 {[%clk 0:02:59.2]} 2... Nc6 {[%clk 0:02:59.5]} 3. Bb5 {[%clk 0:02:58.8]} 3... Nf6 {[%clk 0:02:59.2]} 4. d3 {[%clk 0:02:58.1]} 4... Bc5 {[%clk 0:02:57.6]} 5. Nbd2 {[%clk 0:02:57.1]} 5... d6 {[%clk 0:02:56.4]} 6. O-O {[%clk 0:02:56.4]} 6... O-O {[%clk 0:02:55.4]} 7. c3 {[%clk 0:02:55.6]} 7... a6 {[%clk 0:02:50.8]} 8. Ba4 {[%clk 0:02:54.7]} 8... Ba7 {[%clk 0:02:48.8]} 9. h3 {[%clk 0:02:53.1]} 9... Ne7 {[%clk 0:02:47.6]} 10. Re1 {[%clk 0:02:52.4]} 10... Ng6 {[%clk 0:02:47]} 11. Nf1 {[%clk 0:02:51.3]} 11... h6 {[%clk 0:02:46]} 12. Ng3 {[%clk 0:02:50.6]} 12... Bd7 {[%clk 0:02:45.3]} 13. Bb3 {[%clk 0:02:48.4]} 13... Re8 {[%clk 0:02:44.2]} 14. d4 {[%clk 0:02:46.9]} 14... Be6 {[%clk 0:02:39.2]} 15. Bc2 {[%clk 0:02:45.9]} 15... c5 {[%clk 0:02:35.8]} 16. Be3 {[%clk 0:02:42.2]} 16... Rc8 {[%clk 0:02:31.6]} 17. d5 {[%clk 0:02:34.4]} 17... Bd7 {[%clk 0:02:30.5]} 18. a4 {[%clk 0:02:34.3]} 18... Bb6 {[%clk 0:02:26.6]} 19. Nd2 {[%clk 0:02:08.1]} 19... c4 {[%clk 0:02:10.4]} 20. Bxb6 {[%clk 0:02:08]} 20... Qxb6 {[%clk 0:02:09.6]} 21. a5 {[%clk 0:02:07.9]} 21... Qxb2 {[%clk 0:02:01.3]} 22. Re3 {[%clk 0:02:03.7]} 22... b5 {[%clk 0:01:58.4]} 23. Rf3 {[%clk 0:01:27.9]} 23... Nf4 {[%clk 0:01:38.4]} 24. Ngf1 {[%clk 0:01:23]} 24... Ne2+ {[%clk 0:01:26.8]} 25. Qxe2 {[%clk 0:01:18.1]} 25... Qxa1 {[%clk 0:01:25.2]} 26. Rxf6 {[%clk 0:01:15.1]} 26... gxf6 {[%clk 0:01:25.1]} 27. Qf3 {[%clk 0:01:14.7]} 27... Kg7 {[%clk 0:00:58.5]} 28. Bd1 {[%clk 0:01:10]} 28... h5 {[%clk 0:00:55.5]} 29. Ng3 {[%clk 0:00:52]} 29... Rh8 {[%clk 0:00:54.4]} 30. Ndf1 {[%clk 0:00:51.7]} 30... h4 {[%clk 0:00:46.8]} 31. Nf5+ {[%clk 0:00:34.7]} 31... Bxf5 {[%clk 0:00:45.4]} 32. exf5 {[%clk 0:00:34.6]} 32... b4 {[%clk 0:00:41.2]} 33. cxb4 {[%clk 0:00:34.5]} 33... c3 {[%clk 0:00:40.6]} 34. Bc2 {[%clk 0:00:34.1]} 34... Qc1 {[%clk 0:00:39.4]} 35. Qe2 {[%clk 0:00:30.2]} 35... Rb8 {[%clk 0:00:37.7]} 36. Qg4+ {[%clk 0:00:25.3]} 36... Kf8 {[%clk 0:00:36.7]} 37. Bd3 {[%clk 0:00:23.6]} 37... Qf4 {[%clk 0:00:31.7]} 38. Qd1 {[%clk 0:00:20.1]} 38... Rxb4 {[%clk 0:00:31.3]} 39. Qc2 {[%clk 0:00:19.1]} 39... Rb2 {[%clk 0:00:30.7]} 0-1