tsgammon-core
Version:
A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui
42 lines (41 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cube = exports.CubeOwner = void 0;
/**
* キューブの所有者を表す
*/
var CubeOwner;
(function (CubeOwner) {
CubeOwner[CubeOwner["WHITE"] = 1] = "WHITE";
CubeOwner[CubeOwner["RED"] = 2] = "RED";
})(CubeOwner = exports.CubeOwner || (exports.CubeOwner = {}));
/**
* 新たにCubeを生成する
*
* @param value キューブの値
* @param owner キューブの所有者
* @param max キューブの最大値
* @returns
*/
function cube(value, owner, max = 512) {
const isMax = max <= value;
const doubledValue = isMax ? value : (value * 2);
return {
value,
owner,
max,
isMax,
double(newOwner) {
return cube(doubledValue, newOwner, max);
},
doubledValue,
mayDoubleFor(side) {
return mayDoubleFor(isMax, owner, side);
},
};
}
exports.cube = cube;
// ダブルできるかどうか
function mayDoubleFor(isMax, owner, side) {
return !isMax && (owner === undefined || owner === side);
}