+ return piece.toUpperCase() +
+ (move.vanish.length > move.appear.length ? "x" : "") + finalSquare;
+ }
+ }
+
+ // Complete the usual notation, may be required for de-ambiguification
+ getLongNotation(move)
+ {
+ const startSquare =
+ String.fromCharCode(97 + move.start.y) + (VariantRules.size[0]-move.start.x);
+ const finalSquare =
+ String.fromCharCode(97 + move.end.y) + (VariantRules.size[0]-move.end.x);
+ return startSquare + finalSquare; //not encoding move. But short+long is enough
+ }
+
+ // The score is already computed when calling this function
+ getPGN(mycolor, score, fenStart, mode)
+ {
+ let pgn = "";
+ pgn += '[Site "vchess.club"]<br>';
+ const d = new Date();
+ const opponent = mode=="human" ? "Anonymous" : "Computer";
+ pgn += '[Variant "' + variant + '"]<br>';
+ pgn += '[Date "' + d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate() + '"]<br>';
+ pgn += '[White "' + (mycolor=='w'?'Myself':opponent) + '"]<br>';
+ pgn += '[Black "' + (mycolor=='b'?'Myself':opponent) + '"]<br>';
+ pgn += '[Fen "' + fenStart + '"]<br>';
+ pgn += '[Result "' + score + '"]<br><br>';
+
+ // Standard PGN
+ for (let i=0; i<this.moves.length; i++)
+ {
+ if (i % 2 == 0)
+ pgn += ((i/2)+1) + ".";
+ pgn += this.moves[i].notation[0] + " ";