UNPKG

kokopu

Version:

A JavaScript/TypeScript library implementing the chess game rules and providing tools to read/write the standard chess file formats.

119 lines (105 loc) 2.39 kB
--- title: Game/JSON conversion --- Game/JSON conversion ==================== A {@link Game} object can be serialized to JSON using method {@link Game.pojo}, while the corresponding de-serialization operation is achieved by method {@link Game.fromPOJO}. An example of JSON de-serialization from file [`example.json`](example.json) is presented below: ``` const { Game } = require('kokopu'); const fs = require('fs'); // Read the content of the JSON file provided above const jsonText = fs.readFileSync('example.json', 'utf8'); // De-serialize this content. const game = Game.fromPOJO(JSON.parse(jsonText)); // Display an ASCII-art representation of the game. console.log(game.ascii()); // Event: 1st American Chess Congress (4.6) // Site: New York, NY USA // Date: November 3, 1857 // White: Paulsen, Louis // Black: Morphy, Paul // 1.e4 // 1...e5 // 2.Nf3 // 2...Nc6 // 3.Nc3 // 3...Nf6 // 4.Bb5 // 4...Bc5 // 5.O-O // 5...O-O // 6.Nxe5 // 6...Re8 // 7.Nxc6 // 7...dxc6 // 8.Bc4 // 8...b5 // 9.Be2 // 9...Nxe4 // 10.Nxe4 // 10...Rxe4 // 11.Bf3 // 11...Re6 // 12.c3 // 12...Qd3 // 13.b4 // 13...Bb6 // 14.a4 // 14...bxa4 // 15.Qxa4 // 15...Bd7 // 16.Ra2 // 16...Rae8 // 17.Qa6 Morphy took twelve minutes over his next move, probably to assure himself that the combination was sound and that he had a forced win in every variation. // 17...Qxf3 !! // 18.gxf3 // 18...Rg6+ // 19.Kh1 // 19...Bh3 // 20.Rd1 // | // +- Not // | 20.Rg1 // | 20...Rxg1+ // | 21.Kxg1 // | 21...Re1+ −+ // | // 20...Bg2+ // 21.Kg1 // 21...Bxf3+ // 22.Kf1 // 22...Bg2+ // | // +- 22...Rg2 ! would have won more quickly. For instance: // | 23.Qd3 // | 23...Rxf2+ // | 24.Kg1 // | 24...Rg2+ // | 25.Kh1 // | 25...Rg1# // | // 23.Kg1 // 23...Bh3+ // 24.Kh1 // 24...Bxf2 // 25.Qf1 Absolutely forced. // 25...Bxf1 // 26.Rxf1 // 26...Re2 // 27.Ra1 // 27...Rh6 // 28.d4 // 28...Be3 // 0-1 ``` The reverse JSON serialization operation is achieved similarly: ``` const game = /* initialized as above */; // Display the JSON representing the game. console.log(JSON.stringify(game.pojo())); // {"white":{"name":"Paulsen, Louis"},"black":{"name":"Morphy, Paul"},"event":"1st American Chess Congress", // "round":4,"subRound":6,"date":"1857-11-03","site":"New York, NY USA","result":"0-1","mainVariation":["e4", // "e5","Nf3","Nc6","Nc3","Nf6","Bb5","Bc5","O-O","O-O","Nxe5" etc... ```