UNPKG

@chess-fu/chess-game

Version:
50 lines 2.12 kB
"use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); var MoveCriteria; (function (MoveCriteria) { MoveCriteria[MoveCriteria["Empty"] = 1] = "Empty"; MoveCriteria[MoveCriteria["EmptyAndStart"] = 2] = "EmptyAndStart"; MoveCriteria[MoveCriteria["Attacking"] = 3] = "Attacking"; })(MoveCriteria = exports.MoveCriteria || (exports.MoveCriteria = {})); var MoveTable = { wp: [ { x: 0, y: -1, when: MoveCriteria.Empty }, { x: 0, y: -2, when: MoveCriteria.EmptyAndStart }, { x: 1, y: -1, when: MoveCriteria.Attacking }, { x: -1, y: -1, when: MoveCriteria.Attacking } ], bp: [ { x: 0, y: 1, when: MoveCriteria.Empty }, { x: 0, y: 2, when: MoveCriteria.EmptyAndStart }, { x: 1, y: 1, when: MoveCriteria.Attacking }, { x: -1, y: 1, when: MoveCriteria.Attacking } ], r: [{ x: 0, y: 1, rotate: true, repeat: true }], n: [{ x: 2, y: 1, rotate: true }, { x: 1, y: 2, rotate: true }], b: [{ x: 1, y: 1, rotate: true, repeat: true }], q: [{ x: 0, y: 1, rotate: true, repeat: true }, { x: 1, y: 1, rotate: true, repeat: true }], k: [{ x: 0, y: 1, rotate: true }, { x: 1, y: 1, rotate: true }], }; exports.MoveTable = MoveTable; function rotate90(moves) { var x = moves.x, y = moves.y; return __assign({}, moves, { x: -y, y: x }); } function expandMoves(moves) { var rotates = moves.filter(function (m) { return m.rotate; }); var results = moves.concat(rotates.map(function (m) { return rotate90(m); }), rotates.map(function (m) { return rotate90(rotate90(m)); }), rotates.map(function (m) { return rotate90(rotate90(rotate90(m))); })); return results; } Object.keys(MoveTable) .forEach(function (key) { MoveTable[key] = expandMoves(MoveTable[key]); }); //# sourceMappingURL=chessMoves.js.map