@chess-fu/chess-game
Version:
Chess game logic
50 lines • 2.12 kB
JavaScript
;
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