tsgammon-core
Version:
A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui
49 lines (48 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.redViewAbsoluteBoard = exports.whiteViewAbsoluteBoard = exports.initAbsoluteBoard = void 0;
const BoardState_1 = require("./BoardState");
const GameConf_1 = require("./GameConf");
/**
* 絶対表記の盤面状態を生成する
* @param pieces 駒の配置を表す配列
* @param bornOffs すでに上げた駒の数の配列:bornOffs[0]は赤、[1]は白(省略時はいずれも0)
* @returns
*/
function initAbsoluteBoard(pieces = GameConf_1.standardConf.initialPos, bornOffs = [0, 0]) {
const board = (0, BoardState_1.boardState)(pieces, bornOffs);
return whiteViewAbsoluteBoard(board);
}
exports.initAbsoluteBoard = initAbsoluteBoard;
/**
* 相対表記であるBoardStateを、Whiteの観点で絶対表記に変換する。
* 実質的にはそのまま返す
* @param boardState
*/
function whiteViewAbsoluteBoard(boardState) {
return {
points: () => boardState.points,
piecesAt: (n) => boardState.piecesAt(n),
whiteBornOff: () => boardState.myBornOff,
redBornOff: () => boardState.opponentBornOff,
};
}
exports.whiteViewAbsoluteBoard = whiteViewAbsoluteBoard;
/**
* 相対表記であるBoardStateを、Redの観点で絶対表記に変換する。
* 実質的には座標を反転、駒数も正負反転させて返す
* @param boardState
*/
function redViewAbsoluteBoard(boardState) {
const boardSize = boardState.points.length - 1;
return {
points: () => boardState.points
.slice()
.reverse()
.map((v) => (v === 0 ? v : -v)),
piecesAt: (n) => -boardState.piecesAt(boardSize - n),
whiteBornOff: () => boardState.opponentBornOff,
redBornOff: () => boardState.myBornOff,
};
}
exports.redViewAbsoluteBoard = redViewAbsoluteBoard;