UNPKG

tsgammon-core

Version:

A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui

91 lines (90 loc) 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeMoveAbsoluteAsRed = exports.makeMoveAbsoluteAsWhite = exports.makeMovesAbsoluteAsRed = exports.makeMovesAbsoluteAsWhite = exports.absoluteMovesRed = exports.absoluteMovesWhite = void 0; /** * 相対表記のムーブの配列を、白の手番のムーブとして絶対表記のムーブの配列に変換する * @param moves 相対表記のムーブの配列 * @param invertPos 座標変換関数 * @returns */ function absoluteMovesWhite(moves, invertPos) { return makeMovesAbsoluteAsWhite(moves.map((move) => { var _a; return (Object.assign(Object.assign({}, move), { isHit: (_a = move.isHit) !== null && _a !== void 0 ? _a : false, pip: move.to - move.from })); }, invertPos)); } exports.absoluteMovesWhite = absoluteMovesWhite; /** * 相対表記のムーブの配列を、赤の手番のムーブとして絶対表記のムーブの配列に変換する * @param moves 相対表記のムーブの配列 * @param invertPos 座標変換関数 * @returns */ function absoluteMovesRed(moves, invertPos) { return makeMovesAbsoluteAsRed(moves.map((move) => { var _a; return (Object.assign(Object.assign({}, move), { isHit: (_a = move.isHit) !== null && _a !== void 0 ? _a : false, pip: move.to - move.from })); }, invertPos)); } exports.absoluteMovesRed = absoluteMovesRed; const invertPosDefault = (pos) => 25 - pos; /** * 最小限の項目からなる相対表記のムーブの配列を、白の手番のムーブとして絶対表記のムーブの配列に変換する * @param moves 相対表記のムーブの配列 * @param invertPos 座標変換関数 * @returns */ function makeMovesAbsoluteAsWhite(moves, invertPos) { return moves.map((move) => makeMoveAbsoluteAsWhite(move, invertPos)); } exports.makeMovesAbsoluteAsWhite = makeMovesAbsoluteAsWhite; /** * 最小限の項目からなる相対表記のムーブの配列を、赤の手番のムーブとして絶対表記のムーブの配列に変換する * @param moves 相対表記のムーブの配列 * @param invertPos 座標変換関数 * @returns */ function makeMovesAbsoluteAsRed(moves, invertPos) { return moves.map((move) => makeMoveAbsoluteAsRed(move, invertPos)); } exports.makeMovesAbsoluteAsRed = makeMovesAbsoluteAsRed; /** * 最小限の項目からなる相対表記のムーブを、白の手番のムーブとして絶対表記のムーブに変換する * @param moves 相対表記のムーブ * @param invertPos 座標変換関数 * @returns */ function makeMoveAbsoluteAsWhite(move, invertPos = invertPosDefault) { return makeMoveAbsolute(move, invertPos, (n) => n); } exports.makeMoveAbsoluteAsWhite = makeMoveAbsoluteAsWhite; /** * 最小限の項目からなる相対表記のムーブを、赤の手番のムーブとして絶対表記のムーブに変換する * @param moves 相対表記のムーブ * @param invertPos 座標変換関数 * @returns */ function makeMoveAbsoluteAsRed(move, invertPos = invertPosDefault) { return makeMoveAbsolute(move, invertPos, invertPos); } exports.makeMoveAbsoluteAsRed = makeMoveAbsoluteAsRed; function makeMoveAbsolute(move, invertPos, makeAbsPos) { const fromDec = invertPos(move.from); const toDec = invertPos(move.to); const fromAbs = makeAbsPos(move.from); const toAbs = makeAbsPos(move.to); return { fromAbs: fromAbs, toAbs: toAbs, fromAbsInv: invertPos(fromAbs), toAbsInv: invertPos(toAbs), fromAsc: move.from, toAsc: move.to, fromDec: fromDec, toDec: toDec, pip: move.pip, isBearOff: toDec <= 0, isReenter: move.from === 0, isHit: move.isHit, }; }